logback的配置
# 配置文件的加载
顺序依次:
- classpath下的logback-test.xml
- classpath下的logback.groovy
- classpath下的logback.xml
- 通过SPI机制加载META-INF/services/com.qos.logback.classic.spi.Configurator文件,里面写配置类的全限定类名
- 以上都没有则使用自带的BasicConfigurator配置一个控制台输出日志的配置
设置其他方式加载配置文件
- 通过vm参数指定配置文件 -Dlogback.configurationFile=/path/to/config.xml
- 通过代码内设置
System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY, "/path/to/config.xml");
1
# 打印配置初始化信息
- 手动打印
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger("ROOT");
logger.info("internal info");
// assume SLF4J is bound to logback in the current environment
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
// print logback's internal status
StatusPrinter.print(lc);
...
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
- 自动打印
<configuration debug="true">
...
</configuration>
1
2
3
2
3
- StatusListener方式
自带的有OnConsoleStatusListener,也可以自己实现
<configuration>
<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
</configuration>
1
2
3
2
3
# 自动扫描更改并且更新配置文件
设置scan为true,则会启动ReconfigureOnChangeTask按照指定周期更新配置。
<configuration scan="true" scanPeriod="30 seconds" >
...
</configuration>
1
2
3
2
3
/**
* @author blog.unclezs.com
* @since 2020/12/02 19:54
*/
public class ScanConfigModifySample {
public static void main(String[] args) throws InterruptedException {
Logger logger = LoggerFactory.getLogger(ScanConfigModifySample.class);
while (true) {
logger.info("scan period by 1 seconds");
Thread.sleep(2000);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
然后修改编译后的target/的配置文件,自动更新。
# 启用在堆栈跟踪中显示Jar包信息
也就是在打印除了打印堆栈信息外还会显示这一栈信息中属于哪个jar包合jar包的版本信息。这个计算代价很高,特别是在异常频繁发生的情况下。
- 配置中启用
<configuration packagingData="true">
...
</configuration>
1
2
3
2
3
- 代码中启用
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.setPackagingDataEnabled(true);
1
2
2
# 停止日志记录
代码控制直接停止日志记录器。
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger = context.getLogger("ROOT");
logger.info("stop start");
context.stop();
//不显示
logger.info("is stop?");
1
2
3
4
5
6
2
3
4
5
6
注册日志停止记录的shutdownHook,在独立的Java应用程序中,向配置文件中添加
可以通过class来指定自己的showdownHook
<configuration debug="true">
<shutdownHook/>
....
</configuration>
1
2
3
4
2
3
4
# 参考
在 GitHub 编辑此页 (opens new window)
上次更新: 2024/02/25, 12:11:11