logback+slf4j实现日志记录
来源:互联网 发布:淘宝手机配件店铺名字 编辑:程序博客网 时间:2024/06/05 17:46
LogBack
- 官方文档:http://logback.qos.ch/documentation.html
- logback的配置
- 如果没有配置文件logback-test.xml或logback.xml,logback默认调用BasicConfigurator,创建一个最小化配置。该最小化配置由一个关联到根logger的ConsoleAppender组成。输出用模式为%d{HH:mm:ss:SSS}[%thread]%-5level-%logger{36} -%msg%n的PatternLayoutEncoder进行格式化。root logger默认级别是DEBUG。
- logback的配置文件:基本结构:以<configuration>开头,后面有零个或多个<appender>元素,有零个或多个<logger>元素,有最多一个<root>元素。
- logback默认配置的步骤:
- 尝试在classpath下查找文件logback-test.xml;
- 如果文件不存在,查找文件logback.xml;
- 如果两个文件都不存在,logback用BasicConfigurator自动对自己进行配置,记录输出到控制台。
- logback.xml文件格式
- 根节点<configuration>,包含三个属性:
- scan:此属性为true时,配置文件如果发生改变,将会被重新加载,默认值为true;
- scanPeriod:设置监测配置文件是否有修改的时间间隔,时间单位默认是毫秒。当scan为true时,此属性生效。默认时间为一分钟;
- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认为false。
- 子节点<contextName>,设置上下文名称,每个logger都关联到logger上下文,默认上下文名称为default。用于区别不同应用程序的记录。一旦设置,不能修改。
- 子节点<property>:定义变量值,属性包括name和value,通过<property>定义的值会被插入到logger上下文中,使用${}使用变量。
- 子节点<timestamp>:截获时间戳字符串,属性key和datePattern。key标识此<timestamp>的名字;darePattern将当前时间转换为字符串的模式。遵循java.text.SimpleDateFormat的格式。
- 子节点<appender>:属性name和class。name指定appender名称,class指定appender的全限定名:
- ConsoleAppender把日志输出到控制台,子节点包括:
- <encoder>:对记录日志进行格式化
- <target>:
- FileAppender:把日志添加到文件,子节点包括:
- <file>:被写入的文件名,可以是相对值,也可以是绝对值,如果上层目录不存在会自动创建,没有默认值;
- <appender>:如果是true,日志被追加到文件结尾,如果是false,清空现存文件,默认是true;
- <encoder>:对记录事件进行格式化
- <prudent>:如果是true,日志会被安全地写入文件,即使其他的FileAppender也向此文件做写入操作,效率低,默认为false。
- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。子节点包括:
- <file>:被写入的文件名,同上;
- <appender>:同上;
- <rollingPolicy>:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名。属性class定义具体的滚动策略类;
- class=“ch.qos.logback.core.rolling.TimeBasedRollingPolicy":最常用的滚动策略,根据时间来制定滚动策略,子节点:
- <fileNamePattern>:必要节点,包含文件名及“%d"转换符,“%d”可以包含一个java.text.SimpleDateFormat指定的时间格式,如%d{yyyy-MM};
- <maxHistory>:可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。
- class=“ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy",子节点:
- <maxFileSize>,默认值为10MB
- class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy",子节点:
- <minIndex>
- <maxIndex>
- <fileNamePattern>
- class=“ch.qos.logback.core.rolling.TimeBasedRollingPolicy":最常用的滚动策略,根据时间来制定滚动策略,子节点:
- <encoder>:对记录事件进行格式化,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。PatternLayoutEncoder是唯一有用的且默认的encoder,有一个<pattern>节点,用于设置日志的输出格式。使用%加转换符方式。
- SocketAppender、SMTAppender、DBAppender、SyslogAppender、SiftingAppender
- ConsoleAppender把日志输出到控制台,子节点包括:
- 子节点<logger>:用来设置某一个包或具体的类的日志打印级别、以及指定<appender>。<logger>有name属性,一个可选的level和一个可选的addtivity属性。可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个logger;
- name:用来指定受此logger约束的某一个包或者具体的某一个类;
- level:打印级别:TRACE,DEBUG,INFO,WARN,ERROR,ALL和OFF。INHERITED或NULL表示强制执行上级的级别。如果没有该属性,logger会继承上级的级别;
- addtivity:是否向上级logger传递打印信息。默认为true。可以包含零个或多个<appender-ref>元素,标识这个appender将会添加到这个logger。
- 字节点<root>:是一个logger元素,是根logger,所有<logger>的上级。只有level属性。name为root,默认值为DEBUG。
- 根节点<configuration>,包含三个属性:
SLF4J
它不是一个真正的日志实现,是一个抽象层,运行后台使用任意一个日志类库,只需要更换依赖包和配置文件。
LogBack + slf4j
- 依赖:
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-core</artifactId> <version>1.1.3</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.3</version> </dependency>- logback.xml
<?xml version="1.0" encoding="UTF-8"?><configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy/MM/dd-HH:mm:ss.SSS} %level [%thread] %class:%line>>%msg%n</pattern> </encoder > </appender> <appender name="file" class="ch.qos.logback.core.FileAppender"> <!--<file>D:/logs/dis.log</file>--> <file>/home/work/monkey_dispatcher/tomcat/logs/dispatcher.log</file> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/home/work/monkey_dispatcher/tomcat/logs/</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>%d{yyyy-MM-dd}.log</fileNamePattern> </rollingPolicy> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <!--<logger name="com.controller" level="INFO"></logger>--> <root level="debug"> <appender-ref ref="stdout" /> <appender-ref ref="file" /> <appender-ref ref="rollingFile" /> </root></configuration>- java代码:
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");}}
阅读全文
0 0
- logback+slf4j实现日志记录
- 用slf4j+logback实现多功能日志解决方案
- 用slf4j+logback实现多功能日志解决方案
- 用slf4j+logback实现多功能日志解决方案
- 用slf4j+logback实现多功能日志解决方案
- logback+slf4j日志记录 以及各种日志系统整合
- logback slf4j管理 日志
- slf4j logback创建日志
- logback+slf4j日志框架
- logback+slf4j日志实例
- 使用logback实现日志记录
- 日志:slf4j+logback日志生成
- 用slf4j+logback实现多功能日志解决方案 --- 转
- 用slf4j+logback实现多功能日志解决方案 --- 转
- 用slf4j+logback实现多功能日志解决方案 --- 转
- 用slf4j+logback实现多功能日志解决方案 --- 转
- slf4j+logback实现多个日志输出配置实例
- slf4j+logback实现日志存放到不同文件
- Android中的异步消息
- 理解UIView的绘制
- 蓝牙BLE基础:CC2541通信系列之模拟UART协议
- 详解循环神经网络(Recurrent Neural Network)
- Apache+Tomcat服务器集群配置详细步骤
- logback+slf4j实现日志记录
- 浮点数在计算机中存储方式
- 1、Linux基本命令
- Redis学习——redis.conf 配置文件介绍
- UML: 依赖,泛化,关联,聚合,组合,实现
- 从一道面试题来认识java类加载时机与过程
- 使用GPIB总线接收数据
- 单例模式,双重检验锁
- Android读取通讯录信息