当前位置:   article > 正文

logback日志详解_configuraion+debug属性

configuraion+debug属性

 

logback日志配置
一、日志级别已经输出规则:
日志级别从高到低:OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL 
日志输出规则:根据当前ROOT 级别,日志输出时,级别高于root默认的级别时会输出。 
二、根节点<configuration>包含的属性
scan:当此属性设置为true时,配置文件如果发生改变,将会被从新加载,默认为true。
scanPeriod:设置监测文件是否有修改的时间间隔,如果没有给出时间单位,默认单位为毫秒。当scan为true时,此属性生效。默认为1分钟。
debug:当此属性设置成true时,将打印出logback内部的日志信息,实时查看logback运行状态。默认值为false。
例如:

 

  1. <configuration scan="true" scanPeriod="60 seconds" debug="false>
  2. <!--其他配置省略-->
  3. </configuration>

三、根节点<configuraion>的子节点
该根节点一功有三个子节点,appender、logger、root。
下面详细说明各个子节点的用处:
(1)<contextName>
设置上下文名称。每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>修改成其他名字,用于区分不同应用程序的记录。一旦设置,不能够修改。

 

  1. <configuration scan="true" scanPeriod="60 seconds" debug="false>
  2. <contextName>myAppname</contextName>
  3. <!--其他配置省略-->
  4. </configuration>


(2)<property>
设置变量值的标签。该标签设置的值会被插入到logger的应用上下文中,到后面可以通过${}来访问。该标签中有两个属性,name和value,前者是标签的名字,后者是标签的值。

 

  1. <configuration scan="true" scanPeriod="60 seconds" debug="false>
  2. <property name="APP_NAME" value="myAppname"/>
  3. <contextName>${APP_NAME}</contextName>
  4. <!--其他配置省略-->
  5. </configuration>

 

(3)<timestamp>

获取时间戳字符串。
此标签有两个属性,key和datePattern。前者是标签的名字,后者是设置当前时间转换成字符串的模式。

 

  1. <configuration scan="true" scanPeriod="60 seconds" debug="false>
  2. <timestamp key="bySecond" value="yyyyMMdd'T'HHmmss"/>
  3. <contextName>${bySecond}</contextName>
  4. <!--其他配置省略-->
  5. </configuration>


(4)<logger>
设置某一个包或者类的日志打印级别、以及指定相应的<appender>。该标签有把三个属性。name、level和addtivity。
name:用来指定受此logger约束的某一个包或者具体的某一个类。
level:用来设置日志的打印级别,大小写无关。这个属性可以没有,如果没有则继承上级的级别,如果设置成INHERITED或者同义词NULL,代表强制执行上级的级别。
addtivity:是否向上级logger传递打印信息,默认是true。
注意:<logger>可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个log中。
(5)<root>
<root>元素也是logger元素,不同的是他是根logger。只有一个level属性,因为已经被命名为“root”。
三、应用实例
(1)只配置root
logback.xml

 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  4. <!-- encoder 默认配置为PatternLayoutEncoder -->
  5. <encoder>
  6. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  7. </encoder>
  8. </appender>
  9. <root level="INFO">
  10. <appender-ref ref="STDOUT" />
  11. </root>
  12. </configuration>

测试方法

 

  1. @Test
  2. public void testLogback(){
  3. logger.debug("debug");
  4. logger.info("info");
  5. logger.warn("warn");
  6. logger.error("error");
  7. }
@Test public void testLogback(){ logger.debug("debug"); logger.info("info"); logger.warn("warn"); logger.error("error"); }

 

 

输出内容
23:14:42.697 [main] INFO  com.liutao.userTest.UserTest - info
23:14:42.697 [main] WARN  com.liutao.userTest.UserTest - warn
23:14:42.697 [main] ERROR com.liutao.userTest.UserTest - error


(2)带有logger的配置,不指定级别,不指定appender
logback.xml

 

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <configuration>
  3. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  4. <!-- encoder 默认配置为PatternLayoutEncoder -->
  5. <encoder>
  6. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  7. </encoder>
  8. </appender>
  9. <!-- logback为java中的包 -->
  10. <logger name="com.liutao.userTest"/>
  11. <root level="INFO">
  12. <appender-ref ref="STDOUT" />
  13. </root>
  14. </configuration>


测试方法

 

  1. @Test
  2. public void testLogback(){
  3. logger.debug("debug");
  4. logger.info("info");
  5. logger.warn("warn");
  6. logger.error("error");
  7. }
@Test public void testLogback(){ logger.debug("debug"); logger.info("info"); logger.warn("warn"); logger.error("error"); }

输出内容
23:14:42.697 [main] INFO  com.liutao.userTest.UserTest - info
23:14:42.697 [main] WARN  com.liutao.userTest.UserTest - warn
23:14:42.697 [main] ERROR com.liutao.userTest.UserTest - error


注意:
该<logger>标签将控制com.liutao.userTest包下所有类的日志的打印,但是并没有设置日志打印的级别,从而继承上级<root>的日志打印级别“DEBUG”。
没有设置addtivity,默认为true,将此logger打印信息向上级传递。
没有设置appender,此logger本身不打印任何日志。
<root level="DEBUG">将root的打印级别设置为“DEBUG”,指定了名字为“STDOUT”的appender。
(3)带有多个logger的配置,指定级别,指定appender。
logback.xml
<?xml version="1.0" encoding="UTF-8"?>

 

 

  1. <configuration>
  2. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  3. <!-- encoder 默认配置为PatternLayoutEncoder -->
  4. <encoder>
  5. <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
  6. </encoder>
  7. </appender>
  8. <!-- logback为java中的包 -->
  9. <logger name="com.liutao.userTest"/>
  10. <!--指定类的全路径名-->
  11. <logger name="com.liutao.userTest.UserTest" level="INFO" additivity="false">
  12. <appender-ref ref="STDOUT"/>
  13. </logger>
  14. <root level="ERROR">
  15. <appender-ref ref="STDOUT" />
  16. </root>
  17. </configuration>

测试方法

 

  1. @Test
  2. public void testLogback(){
  3. logger.debug("debug");
  4. logger.info("info");
  5. logger.warn("warn");
  6. logger.error("error");
  7. }
@Test public void testLogback(){ logger.debug("debug"); logger.info("info"); logger.warn("warn"); logger.error("error"); }

 


输出内容
23:14:42.697 [main] INFO  com.liutao.userTest.UserTest - info
23:14:42.697 [main] WARN  com.liutao.userTest.UserTest - warn
23:14:42.697 [main] ERROR com.liutao.userTest.UserTest - error


注意:


<logger name="com.liutao.userTest" />将控制logback包下的所有类的日志的打印,但是并没用设置打印级别,所以继承他的上级<root>的日志级别“DEBUG”;
没有设置addtivity,默认为true,将此loger的打印信息向上级传递;
没有设置appender,此loger本身不打印任何信息。
 
<logger name="com.liutao.userTest.UserTest" level="INFO" additivity="false">控制com.liutao.userTest.UserTest类的日志打印,打印级别为“INFO”;
additivity属性为false,表示此loger的打印信息不再向上级传递,
指定了名字为“STDOUT”的appender。
 
<root level="DEBUG">将root的打印级别设置为“ERROR”,指定了名字为“STDOUT”的appender。
 
当执行com.liutao.userTest.UserTest方法时,先执行<logger name="com.liutao.userTest.UserTest" level="INFO" additivity="false">,将级别为“INFO”及大于“INFO”的日志信息交给此loger指定的名为“STDOUT”的appender处理,在控制台中打出日志,不再向次loger的上级 <logger name="com.liutao.userTest"/> 传递打印信息;
<logger name="com.liutao.userTest"/>未接到任何打印信息,当然也不会给它的上级root传递任何打印信息;
但是,这里如果将additivity设置成true,日志将打印两次。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/163334?site
推荐阅读
相关标签
  

闽ICP备14008679号