# 日志收集
Corejs提供了高拓展性的日志收集系统:
使用实例方法
log
输出日志:于执行过程中自动执行状态检测(可配置),在输出器/组处于启动状态时将输出日志。使用实例方法
start
启动输出器/组:于执行过程中自动执行状态检测(可配置),在输出器/组处于关闭状态时将创建基础资源(如:文件句柄等)并变更其为启动状态。使用实例方法
close
关闭输出器/组:于执行过程中自动执行状态检测(可配置),在输出器/组处于启动状态时将释放基础资源(如:文件句柄等)并变更其为关闭状态。
说明
日志输出组本质上是高阶日志输出器。因此,日志输出器/组的定制规则有一定的相似性。
但是,它们的实例获取方式和输出原理完全不同。
在获取方式上:
- 日志输出器:使用
new
关键字和输出器配置直接实例化。 - 日志输出组:首先,使用根据期望聚合的日志输出器构造的配置对象创建LoggerCore实例;然后,执行LoggerCore的实例方法
createGroupLogger
生成指定类型的日志输出组实例。
在输出原理上:
- 日志输出器:按照输出模型进行日志输出。
- 日志输出组:逐个调用其中聚合的日志输出器的实例方法
log
进行日志输出。
# 日志输出器
日志输出器可以在业务层中单独使用;也可以被聚合在日志输出组中作为单点输出模块。
Corejs内置了多种日志输出器以满足常规需求:
当内置输出器无法满足业务需求时,我们可以考虑:
# 日志输出组
日志输出组本身没有实际的日志输出能力,而是通过聚合一个或多个日志输出器实例,并逐个调用它们的实例方法log
以实现日志多点输出。
通常,我们通过在自定义输出组时修改其实例方法start
、close
、log
执行时的行为将日志收集与业务逻辑结合。
注意
日志输出组无法通过直接实例化得到其实例。
在使用日志输出组时:
根据期望聚合的日志输出器构造的配置对象创建LoggerCore实例。
在执行LoggerCore的实例方法
createGroupLogger
时指定期望使用的日志输出组类型以得到其实例。
因此,LoggerCore是生产日志输出组的工厂。