当前位置: 代码迷 >> 综合 >> logback,利用java包名对包内所有类定义输出形式
  详细解决方案

logback,利用java包名对包内所有类定义输出形式

热度:45   发布时间:2023-12-08 17:26:43.0

目的

将java package 中的所有类定义一个输出logger,定义它的级别,这样就不用每个类都配置。

测试

配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{MM/dd/yyyy HH:mm:ss} %-5level [%thread%X{sourceThread}]%logger{24} - %msg%n</pattern></encoder></appender><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>/var/log/admin-manage/log.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>/var/log/admin-manage/log.%d{yyyy-MM-dd}.log.gz</fileNamePattern><maxHistory>7</maxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{MM/dd/yyyy HH:mm:ss} %-5level ${version} [%thread]%logger{16} - %msg%n</pattern></encoder></appender><logger name="test1" level="info"/><logger name="test2" level="info" additivity="false"/><logger name="test3" level="warn" additivity="false"><appender-ref ref="STDOUT"/></logger><logger name="test4" level="warn" ><appender-ref ref="STDOUT"/></logger><logger name="com.netease.haitao.LogbackTest" level="warn"><appender-ref ref="STDOUT"/></logger><root level="DEBUG"><appender-ref ref="STDOUT"/></root>
</configuration>
代码
package com.netease.haitao.LogbackTest;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;/*** ${todo}** @param: $$params$* @return $returns$* @date $date$ $time$*/
public class LogBackTestOne {private static final Logger logger = LoggerFactory.getLogger(LogBackTestOne.class);public static void main(String[] arg) {
//        print("test1");
//        print("test2");
//        print("test3");
//        print("test4");print("test4.test5");}public static void print(String name) {//Logger logger = LoggerFactory.getLogger(name);logger.debug("debug");logger.info("info");logger.warn("warn");logger.error("error");}
}
输出结果
05/03/2018 09:28:38 WARN  [main]c.n.h.L.LogBackTestOne - warn
05/03/2018 09:28:38 WARN  [main]c.n.h.L.LogBackTestOne - warn
05/03/2018 09:28:38 ERROR [main]c.n.h.L.LogBackTestOne - error
05/03/2018 09:28:38 ERROR [main]c.n.h.L.LogBackTestOne - error

大家可以注意到,这里只输出warn和error级别的信息,这是因为配置文件中“logger name=“com.netease.haitao.LogbackTest” level=“warn”” 中定义了日志级别,并且有root作为一个根级别的日志输出节点。
如果我们把name换成其他名字,修改为“logger name=“Test5” level=“warn””,我们看下结果:

05/03/2018 09:24:04 DEBUG [main]c.n.h.L.LogBackTestOne - debug
05/03/2018 09:24:04 INFO  [main]c.n.h.L.LogBackTestOne - info
05/03/2018 09:24:04 WARN  [main]c.n.h.L.LogBackTestOne - warn
05/03/2018 09:24:04 ERROR [main]c.n.h.L.LogBackTestOne - error

上述结果就是修改后的结果,从这里看出,所有的日志信息都从root这个父节点输出了,因为root的级别是debug,所有的日志信息都打印出来了,这样说明我们之前配置的java包的测试是成功的,有结果的。

  • 如果项目是基于springboot框架的话,不需要额外引用相关依赖,直接配置logback.xml就可以直接用。

结论

上述测试证明:logger的name可以配置成java包名,这样可以对包内的所有java类都起作用。帮助简化配置。

  相关解决方案