1. Java_LogBack 用法简介
来源:互联网 发布:淘宝卖家未发货骗术 编辑:程序博客网 时间:2024/06/05 19:16
- 概述
- LogBackSlf4j和Log4j之间的关系
- LogBack的结构
- 配置详解
- 1 根节点包含的属性
- 2 根节点 的子节点
- 21 logger
- 22 root
1 概述
LogBack是一个日志框架,它与Log4j可以说是同出一源,都出自Ceki Gülcü之手。(log4j的原型是早前由Ceki Gülcü贡献给Apache基金会的)
2 LogBack、Slf4j和Log4j之间的关系
Slf4j是The Simple Logging Facade for Java的简称,是一个简单日志门面抽象框架,它本身只提供了日志Facade API和一个简单的日志类实现,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作为应用层的Log接入时,程序可以根据实际应用场景动态调整底层的日志实现框架(Log4j/LogBack/JdkLog…)。
LogBack和Log4j都是开源日记工具库,LogBack是Log4j的改良版本,比Log4j拥有更多的特性,同时也带来很大性能提升。详细数据可参照下面地址:Reasons to prefer logback over log4j。
3 LogBack的结构
LogBack被分为3个组件,logback-core, logback-classic 和 logback-access。
其中logback-core提供了LogBack的核心功能,是另外两个组件的基础。
logback-classic则实现了Slf4j的API,所以当想配合Slf4j使用时,需要将logback-classic加入classpath。
logback-access是为了集成Servlet环境而准备的,可提供HTTP-access的日志接口。
4 配置详解
4.1 根节点包含的属性
- scan:当此属性设置为 true 时,配置文件如果发生变化,将会被重新加载,默认值为 true。
- scanPeriod:设置监测配置文件是否修改的时间间隔,当 scan 为 true 时,此配置生效,默认时间为 1 分钟
- debug:当此属性设置为 true 时,将打印出 logback 内部日志信息,实时查看 logback 运行状态。默认值为 false
XML代码
<configuration scan="true" scanPeriod="60 second" debug="false">...</configuration>
4.2 根节点 的子节点
LogBack 的配置大概包括 3 部分:appender、logger 和 root
设置上下文名称 <contextName>
每个 logger 都关联到 logger 上下文,默认上下文名称为 “default”。但可以使用 <contextName>
设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。
<configuration scan="true" scanPeriod="60 second" debug="false"> <contextName>myAppName</contextName> ...</configuration>
设置变量 <property>
用来定义变量值的标签,<property>
有两个属性,name 和 value;其中 name 值是变量的名称,value 是值。通过 <property>
定义的值会被插入到 logger 上下文中,定义变量后,可以使用 “${}” 来使用变量。
<configuration scan="true" scanPeriod="60 second" debug="false"> <property name="APP_Name" value="myAppName" /> <contextName>${APP_Name}</contextName> <!-- 其他配置省略--> </configuration>
获取时间戳字符串 timestamp
4.2.1 logger
用来设置某一个包或者具体的类的日志打印级别,以及指定 <appender>
。<logger>
仅有一个 name 属性,一个可选的 level 和一个可选的 addtivity 属性。
- name:用来指定受此 logger 约束的某一个包或者具体的某一个类
- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特殊值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前 logger 将会继承上级的级别。
- addtivity:是否向上级 logger 传递打印信息。默认值为 true
<logger>
可以包含零个或多个 <appender-ref>
元素,标识这个 appender 将会添加到这个 logger。
4.2.2 root
只有一个 level 属性
- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。默认是DEBUG。
<root>
可以包含零个或多个 <appender-ref>
元素,标识这个 appender 将会添加到这个 logger
案例介绍
首先是 java 类如下:
package logback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LogbackDemo { private static Logger log = LoggerFactory.getLogger(LogbackDemo.class); public static void main(String[] args) { log.trace("======trace"); log.debug("======debug"); log.info("======info"); log.warn("======warn"); log.error("======error"); } }
logback.xml 配置文件
只配置root
<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>
其中 appender 的配置表示打印到控制台(稍后详细讲解appender )。<root level="INFO">
将root的打印级别设置为 “INFO”,指定了名字为 “STDOUT” 的 appender。
当执行logback.LogbackDemo类的main方法时,root将级别为 “INFO” 及大于 INFO 的日志信息交给已经配置好的名为 STDOUT 的appender处理,STDOUT appender将信息打印到控制台;
输出结果:
13:30:38.484 [main] INFO logback.LogbackDemo - ======info 13:30:38.500 [main] WARN logback.LogbackDemo - ======warn 13:30:38.500 [main] ERROR logback.LogbackDemo - ======error
带有logger的配置,不指定级别,不指定appender
<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="logback"/> <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration>
输出结果:
13:19:15.406 [main] DEBUG logback.LogbackDemo - ======debug 13:19:15.406 [main] INFO logback.LogbackDemo - ======info 13:19:15.406 [main] WARN logback.LogbackDemo - ======warn 13:19:15.406 [main] ERROR logback.LogbackDemo - ======error
<logger name="logback" />
将控制logback包下的所有类的日志的打印,但是并没有设置打印级别,所以继承他的上级的日志级别“DEBUG”。
没有设置addtivity,默认为true,将此logger的打印信息向上级传递。
没有设置appender,此logger本身不打印任何信息。
<root level="DEBUG">
将root的打印级别设置为“DEBUG”,指定了名字为“STDOUT”的appender。
当执行logback.LogbackDemo类的main方法时,因为LogbackDemo 在包logback中,所以首先执行 <logger name="logback" />
,将级别为“DEBUG”及大于“DEBUG”的日志信息传递给root,本身并不打印。
root接到下级传递的信息,交给已经配置好的名为“STDOUT”的appender处理,“STDOUT”appender将信息打印到控制台。
带有多个logger的配置,指定级别,指定appender
<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="logback"/> <!--logback.LogbackDemo:类的全路径 --> <logger name="logback.LogbackDemo" level="INFO" additivity="false"> <appender-ref ref="STDOUT"/> </logger> <root level="ERROR"> <appender-ref ref="STDOUT" /> </root> </configuration>
- 1. Java_LogBack 用法简介
- 1.STL 中 sort 函数用法简介
- ant用法简介
- GDB 用法简介
- vim 用法简介
- 批处理命令用法简介
- valarray用法简介
- AWK 用法简介
- VSS用法简介
- DBChart用法简介
- GRANT用法简介
- CListCtrl用法简介
- glib简介及用法
- CFileDialog的用法简介!!
- el简介及用法
- CFileDialog的用法简介!!
- linux ulimit用法简介
- map简介以及用法
- H5网页版贪吃蛇源代码
- 虚拟机控制
- 子进程的异步等待方式
- Java的单例设计模式
- 大数运算——加法
- 1. Java_LogBack 用法简介
- 编译工具的php项目(三)数据库MySQL
- 开发笔记
- Redis 哈希(Hash)
- 一些NLP数据/语料下载
- CSDN的网站真傻逼,自己的东西都找不到,操作性太差!!!!!
- Linux: shell命令 eval (有图有代码有真相!!!)
- 金融市场体系
- View事件分发源码分析(二)