logback是我们公司现在用的一个日志技术,是log4j的升级版。就我的学习,他配置起来非常简单,只需要添加maven依赖,一个logback配置文件即可使用。
话不多说,先上demo
<configuration scan="true" scanPeriod="60 seconds">
<!-- 输出日志信息到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date [%thread] %-5level %logger - %X{rule} - %msg%n</pattern>
</encoder>
</appender>
<!-- 输出日志信息到文件 -->
<appender name="Rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/all.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/all-%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class.%method - %msg%n</pattern>
</encoder>
</appender>
<!-- 输出日志信息到文件 -->
<appender name="sql" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/sql.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>log/sql-%d{yyyyMMdd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class.%method - %msg%n</pattern>
</encoder>
</appender>
<!--根logger,只接受下级debug以上日志信息 -->
<root level="DEBUG">
<appender-ref ref="Rolling"/>
</root>
<!--输出所有日志到文件 -->
<logger name="com.alibaba.dubbo.demo.provider" level="DEBUG" />
<!--打印com.alibaba.dubbo包下日志 (打印sql),此logger虽然没有指定appender,但是他的上级root已经指定了,所有他会把信息交给上级 -->
<logger name="com.alibaba.dubbo.demo.provider.dao" level="DEBUG" additivity="false">
<appender-ref ref="STDOUT"/>
<appender-ref ref="sql"/>
</logger>
</configuration>
有几个点是需要注意的:
1.root是一个根logger,他可以接受下级的日志信息,但是只能接受他的级别以上的,上面的例子就是只能接受debug级别以上的日志
2.是指定日志输出的地方。appender是输出日志的地方,里面可以配置日志名字和路径。
3. 虽然没有指定输出日志的地方,但是他默认是将日志信息向上传递的,可通过additivity=”false”来控制这个属性。
4. name=”com.alibaba.dubbo.demo.provider.dao”这种方式是可以直接打印sql