浅谈日志处理logback
2019-03-10 本文已影响0人
不孤独的字符串
logback是由log4j创始人设计的另一款日志组件。比起log4j,logback表现出了更强的性能。logback的内核被重写了,因此初始化内存加载也更小,在关键执行链路上性能也有了很大的提升。功能上,除了日志信息记录外,可以给日志设置生命周期,实现自动去除旧的日志。
logback的开发之处便保持了原有log4j的接口设计风格,因此对于原有日志组件的切换也很简单,只需要将jar包换成logback的,并不需要修改到原有的代码,只需修改配置文件即可。
springboot默认使用的便是logback,因此对于springboot工程来说,并不需要引入额外的jar包,只需在application.properties同级下增加logback.xml配置文件。
<configuration debug="false">
<property name="LOG_PATH" value="/home"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期, %thread表示线程名, %-5level表示级别从左显示5个字符宽度, %msg表示日志消息, %n是换行-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
</appender>
<!-- 每天生成日志文件 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--文件名和保留天数-->
<FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.log</FileNamePattern>
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
</encoder>
<!--文件最大的大小-->
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>100MB</MaxFileSize>
</triggeringPolicy>
</appender>
<!-- 日志输出级别 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
<!--日志异步到数据库 -->
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/dbName</url>
<user>root</user>
<password>123456</password>
</dataSource>
</connectionSource>
</appender>
</configuration>