如何将日志系统切换到 Logback?( 二 )
1)配置 appender , 也就是配置日志的输出目的地 , 通过 name 属性指定名字 , 通过 class 属性指定目的地:
- ch.qos.logback.core.ConsoleAppender:输出到控制台 。
- ch.qos.logback.core.FileAppender:输出到文件 。
- ch.qos.logback.core.rolling.RollingFileAppender:文件大小超过阈值时产生一个新文件 。
encoder 负责把日志信息转换成字节数组 , 并且把字节数组写到输出流 。
pattern 用来指定日志的输出格式:
- %d:输出的时间格式 。
- %thread:日志的线程名 。
- %-5level:日志的输出级别 , 填充到 5 个字符 。 比如说 info 只有 4 个字符 , 就填充一个空格 , 这样日志信息就对齐了 。
文章插图
- %logger{length}:logger 的名称 , length 用来缩短名称 。 没有指定表示完整输出;0 表示只输出 logger 最右边点号之后的字符串;其他数字表示输出小数点最后边点号之前的字符数量 。
- %msg:日志的具体信息 。
- %n:换行符 。
- %relative:输出从程序启动到创建日志记录的时间 , 单位为毫秒 。
appender-ref 用来指定具体的 appender 。
3)查看内部状态信息 。
可以在代码中通过 StatusPrinter 来打印 Logback 内部状态信息 , 也可以通过在 configuration 上开启 debug 来打印内部状态信息 。
重新运行 Test 类 , 可以在控制台看到以下信息:
13:54:54,718 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/Users/maweiqing/Documents/GitHub/JavaPointNew/codes/logbackDemo/target/classes/logback-test.xml]
13:54:54,826 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
13:54:54,828 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT]
13:54:54,833 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
13:54:54,850 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG
13:54:54,850 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT]
13:54:54,850 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
13:54:54,851 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@f8c1ddd - Registering current configuration as safe fallback point
13:54:54.853 [main] DEBUG com.itwanger.Test - logback
4)自动重载配置 。
之前提到 Logback 很强的一个功能就是支持自动重载配置 , 那想要启用这个功能也非常简单 , 只需要在 configuration 元素上添加 scan=true 即可 。
...
默认情况下 , 扫描的时间间隔是一分钟一次 。 如果想要调整时间间隔 , 可以通过 scanPeriod 属性进行调整 , 单位可以是毫秒(milliseconds)、秒(seconds)、分钟(minutes)或者小时(hours) 。
下面这个示例指定的时间间隔是 30 秒:
...
注意:如果指定了时间间隔 , 没有指定时间单位 , 默认的时间单位为毫秒 。
当设置 scan=true 后 , Logback 会起一个 ReconfigureOnChangeTask 的任务来监视配置文件的变化 。
文章插图
把 log4j.properties 转成 logback-test.xml
如果你的项目以前用的 Log4j , 那么可以通过下面这个网址把 log4j.properties 转成 logback-test.xml:
把之前 log4j.properties 的内容拷贝一份:
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=debug.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
- 空调|让格力、海尔都担忧,中国取暖“新潮物”强势来袭,空调将成闲置品?
- 采用|消息称一加9系列将推出三款新机,新增一加9E
- 美国|英国媒体惊叹:165个国家采用北斗将GPS替代,连美国也不例外?
- 通气会|12月4~6日,2020中国信息通信大会将在成都举行
- 页面|如何简单、快速制作流程图?上班族的画图技巧get
- 培育|跨境电商人才如何培育,长沙有“谱”了
- 黑莓(BB.US)盘前涨逾32%,将与亚马逊开发智能汽车数据平台|美股异动 | US
- 荣耀V30|麒麟990+40W快充,昔日猛将彻底沦为清仓价?网友:太遗憾
- 抖音小店|抖音进军电商,短视频的商业模式与变现,创业者该如何抓住机遇?
- 网络覆盖|爱立信:2020年底,将有超过10亿人口获得5G网络覆盖