logback日志详解
来源:互联网 发布:好吃的白巧克力 知乎 编辑:程序博客网 时间:2024/05/17 02:38
logback日志配置
一、日志级别已经输出规则:
日志级别从高到低:OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL
日志输出规则:根据当前ROOT 级别,日志输出时,级别高于root默认的级别时会输出。
二、根节点<configuration>包含的属性
scan:当此属性设置为true时,配置文件如果发生改变,将会被从新加载,默认为true。
scanPeriod:设置监测文件是否有修改的时间间隔,如果没有给出时间单位,默认单位为毫秒。当scan为true时,此属性生效。默认为1分钟。
debug:当此属性设置成true时,将打印出logback内部的日志信息,实时查看logback运行状态。默认值为false。
例如:
该根节点一功有三个子节点,appender、logger、root。
下面详细说明各个子节点的用处:
(1)<contextName>
设置上下文名称。每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>修改成其他名字,用于区分不同应用程序的记录。一旦设置,不能够修改。
(2)<property>
设置变量值的标签。该标签设置的值会被插入到logger的应用上下文中,到后面可以通过${}来访问。该标签中有两个属性,name和value,前者是标签的名字,后者是标签的值。
此标签有两个属性,key和datePattern。前者是标签的名字,后者是设置当前时间转换成字符串的模式。
(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
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
测试方法
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"?>
输出内容
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,日志将打印两次。
一、日志级别已经输出规则:
日志级别从高到低:OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL
日志输出规则:根据当前ROOT 级别,日志输出时,级别高于root默认的级别时会输出。
二、根节点<configuration>包含的属性
scan:当此属性设置为true时,配置文件如果发生改变,将会被从新加载,默认为true。
scanPeriod:设置监测文件是否有修改的时间间隔,如果没有给出时间单位,默认单位为毫秒。当scan为true时,此属性生效。默认为1分钟。
debug:当此属性设置成true时,将打印出logback内部的日志信息,实时查看logback运行状态。默认值为false。
例如:
<configuration scan="true" scanPeriod="60 seconds" debug="false><!--其他配置省略--></configuration>
三、根节点<configuraion>的子节点该根节点一功有三个子节点,appender、logger、root。
下面详细说明各个子节点的用处:
(1)<contextName>
设置上下文名称。每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用<contextName>修改成其他名字,用于区分不同应用程序的记录。一旦设置,不能够修改。
<configuration scan="true" scanPeriod="60 seconds" debug="false><contextName>myAppname</contextName><!--其他配置省略--></configuration>
(2)<property>
设置变量值的标签。该标签设置的值会被插入到logger的应用上下文中,到后面可以通过${}来访问。该标签中有两个属性,name和value,前者是标签的名字,后者是标签的值。
<configuration scan="true" scanPeriod="60 seconds" debug="false><property name="APP_NAME" value="myAppname"/><contextName>${APP_NAME}</contextName><!--其他配置省略--></configuration>
(3)<timestamp>
获取时间戳字符串。此标签有两个属性,key和datePattern。前者是标签的名字,后者是设置当前时间转换成字符串的模式。
<configuration scan="true" scanPeriod="60 seconds" debug="false><timestamp key="bySecond" value="yyyyMMdd'T'HHmmss"/><contextName>${bySecond}</contextName><!--其他配置省略--></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
<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoder 默认配置为PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="STDOUT" /> </root></configuration>
测试方法
@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
<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoder 默认配置为PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- logback为java中的包 --> <logger name="com.liutao.userTest"/> <root level="INFO"> <appender-ref ref="STDOUT" /> </root></configuration>
测试方法
@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"?>
<configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoder 默认配置为PatternLayoutEncoder --> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- logback为java中的包 --> <logger name="com.liutao.userTest"/> <!--指定类的全路径名--> <logger name="com.liutao.userTest.UserTest" level="INFO" additivity="false"> <appender-ref ref="STDOUT"/> </logger> <root level="ERROR"> <appender-ref ref="STDOUT" /> </root></configuration>
测试方法@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,日志将打印两次。
1 0
- logback日志详解
- java日志详解--logback
- Logback日志工具使用详解
- logback日志模板与详解
- 日志组件logback使用详解
- 日志管理logback的使用和logback.xml详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- SLF4J和Logback日志框架详解
- java 日志组件logback配置及详解
- SLF4J和Logback日志框架详解
- Spring中Logback日志配置详解
- log4j,logback,sl4j常用日志格式详解
- logback日志
- 最大字段和
- 读书笔记《Effective C++》条款02:尽量以const,enum,inline替换#define
- 数据流中的中位数
- [无异常,才正常] 加载属性文件内容报:Cannot load JDBC driver class ${jdbc.driverClassName}'
- iOS学习笔记--自定义通讯录
- logback日志详解
- 刘汝佳《算法竞赛入门经典(第二版)》习题(三)
- Trust Region Policy Optimization
- Oracle基本操作六:子查询,rownum,rowid
- Redis Sentinel——安装部署
- 大数据学习--问题集锦(hadoop篇)--集群搭建
- 一个面试题的思考
- linux之环境变量的配置
- 读论文Trust Region Policy Optimization