1. 日志配置
平台参考了 Spring Boot 的日志配置,也是配置在 application.yml 的 “logging” 中。
默认配置如下:
logging:
level: info # 日志级别配置
pattern: "${date} ${level} --- [${logger}] : ${msg}" # 日志格式全局配置
date: # 日志时间格式全局配置
year: "numeric"
month: "long"
day: "2-digit"
hour: "2-digit"
minute: "2-digit"
second: "2-digit"
hour12: false
ConsoleAppender: # ConsoleAppender日志输出器类的全局配置
colors: # 日志级别颜色配置
debug: "#409eff"
info: "#909399"
warn: "#E6A23C"
error: "#F56C6C"
success: "#67C23A"
appenders: # 日志输出器实例列表配置
loggers: # 日志记录器实例列表配置
1.1. 日志级别(logging.level)
日志级别配置支持字符串和对象格式配置。
当配置为字符串时,意味着仅配置了根日志级别。默认根日志级别为:INFO。
logging:
level: info
等同于
logging:
level:
root: info
当配置为对象时,可以为不同的日志记录器配置不同的日志级别。我们以平台内核的启动日志为例:
logging:
level:
core: debug # 配置内核的日志级别
此时就能看到平台内核的启动过程。
如果只想看到路由管理器的初始化过程,可以按如下配置:
logging:
level:
core: info # 配置内核的日志级别
core.manager.router-manager: debug # 配置内核中路由管理器的日志级别
此时就只能看到路由管理器的初始化过程,内核中其他组件的日志将不会输出。
注意:日志记录器名称推荐采用类似java的包名的格式 “<模块名>.<子模块>.<组件名>”
- 便于根据日志记录器名称快速定位日志来源
- 子模块会继承父模块的日志级别,可以配置整个模块的日志级别,避免重复为模块下组件单独配置
1.2. 日志格式(logging.pattern)
日志格式配置支持ES6的模版表达式,默认为:
logging:
pattern: "${date} ${level} --- [${logger}] : ${msg}"
其中:
- date:日志时间,可以通过 “logging.date” 配置时间格式
- level:日志级别
- logger:日志记录器名称
- msg:日志信息
1.3. 日志时间格式(logging.date)
日志时间支持本地化,可以根据浏览器或者NodeJs语言环境,输出本地化的时间。 当浏览器语言设置为英语时,路由管理器的初始化日志如下:
另外还可以配置时间格式,具体配置可以参考JS的日期类型的toLocaleString方法参数。
1.4. 日志输出器类配置
不同的日志输出器类有各自不同的全局配置,如:内置的ConsoleAppender日志输出器类可以配置日志级别的颜色。
注意:
- 一定要用日志输出器的类名(大小写敏感)
- 日志输出器类依然可以配置自己的日志格式和日志时间格式。如果未配置,则默认采用全局配置
1.5. 日志输出器实例列表配置(logging.appenders)
用于配置静态初始化的日志输出器实例。
logging:
appenders:
- name: fooAppender
class: ConsoleAppender
config:
pattern: "xxx"
date:
colors:
isDefault: false # 是否是默认的日志输出器(可选,默认为:false/不是)
这样就会初始化一个名为 “fooAppender” 的ConsoleAppender类型的日志输出器
注意:loggerFactory动态创建日志记录器时会引用默认的日志输出器。如果没有没配置,则会引用内置的名为 “console” 的ConsoleAppender类型的日志输出器。
1.6. 日志记录器实例列表配置(logging.loggers)
用于配置静态初始化的日志记录器实例。
logging:
appenders:
- name: fooLogger
level: error
appenderRef: fooAppender
- name: barLogger
level: info
appenderRef: console
这样就会初始化一个名为 “fooLogger” 的日志级别为 “error” 的日志记录器和一个名为 “barLogger” 的日志级别为 “info” 的日志记录器。
注意:不同的日志记录器可以引用不同的日志输出器,这样就能实现日志的分包分流,将不同模块的日志输出到不同的位置。