logbak.xml的配置
- 要研究logbak.xml文件的配置方法;我们可以去官方手册进行查询;在官方手册中有这么一段描述:
Let us begin by discussing the initialization steps that logback follows to try to configure itself:
- Logback tries to find a file called logback-test.xml in the classpath.
- If no such file is found, it checks for the file logback.xml in the classpath..
- If none of the above succeeds, logback configures itself automatically using the
BasicConfigurator
which will cause logging output to be directed to the console.
项目启动时logbak首先回去classpath路径下去找logbak-test.xml文件,如果没有则会去寻找logbak.xml;如果都没有找到则会按照logbak的默认配置执行。
所以我们要配置自己的log规则,只需要在classpath下创建logbak-test.xml和logbak.xml其一即可;如果两者都存在则则会优先使用logbak-test.xml。
- 简单配置
在classpath路径即resources目录下创建文件logbak-test.xml;内容如下:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
<appender>附着器可以理解为日志打印格式和输出方式(默认输出到控制台)的配置器;可以在appender中配置打印格式
<root>指定全局打印级别,比如指定级别为INFO则,项目中低于INFO的所有级别都将不会打印,在root下可以指定附着器,级指定了日志的输出目标和格式;可以添加多个附着器
- 日志输出到文件
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 全局规定下的所有日志输出到指定文件 -->
<appender name="NORMAL_FILE" class="ch.qos.logback.core.FileAppender">
<file>D:/log/log.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="NORMAL_FILE" />
</root>
</configuration>
我们在配置文件中加了一个日志appender指定了该appender的输出格式和输出文件路径。并将appender加到了root下则root限定的所有日志都将同步打印到控制台和D:/log/log.log文件中
- 指定特殊包下的日志打印规则
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 全局规定下的所有日志输出到指定文件 -->
<appender name="NORMAL_FILE" class="ch.qos.logback.core.FileAppender">
<file>D:/log/log.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<logger name="com.cq" level="ERROR">
<appender-ref ref="ERROR_FILE"/>
</logger>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
新增一个日志记录器<logger>其中name指定目标包路径,level指定日志输出级别,此处的级别同样受制于root下规定的日志级别,比如root指定的级别是info,此logger下指定的日志级别为DEBUG,那么此记录器并不会正常记录DEBUG级别的日志。同root一样我们可以在logger下指定appender用于规定日志的输出目标和日志格式。
- 参数替换
<configuration>
<property resource="logbak.properties"/>
<property name="logPath" value="D:/log/log.log" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- 全局规定下的所有日志输出到指定文件 -->
<appender name="NORMAL_FILE" class="ch.qos.logback.core.FileAppender">
<file>${logPath}</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<logger name="com.cq" level="ERROR">
<appender-ref ref="ERROR_FILE"/>
</logger>
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="STDOUT" />
</root>
</configuration>
我们可以通过property属性将参数统一定义用${}的方式使用,如果指定property的resource属性我们可以将参数定义在另外的properties文件中。