logback 简单说明
1.主要对象
- Logger作为日志的记录器,把它关联到应用的对应的context上后,主要用于存放日志对象,也可以定义日志类型、级别。
- Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字服务器、 MySQL、 PostreSQL、 Oracle和其他数据库、 JMS和远程UNIX Syslog守护进程等。
- Layout 负责把事件转换成字符串,格式化的日志信息的输出。
2.等级排序
级别排序为: TRACE < DEBUG < INFO < WARN < ERROR。
关于更多的信息,可以查阅官网。
springboot对logback的支持
springboot默认的日志框架就是logback,并且增强了logback,配置文件命名为logback-spring.xml才能使用spring封装的一些特性。
1.配置application.properties
需求描述: 有两种环境dev,test。 在dev模式下,我们希望把日志直接打印到控制台。 在test模式下,我们希望把日志记录到文件中,每天创建一个日志文件。
# 把环境设为dev模式
spring.profiles.active=dev
app.name=demo1
app.basedir=/
# linux 下文件路径,test模式下不需要这两个参数
logging.path=/logs
# 文件名使用上面的变量
logging.file=${app.name}
2.配置logback-spring.xml
logback的默认配置在spring-boot-1.5.8.RELEASE.jar包中。 具体路劲是:org.springframework.boot.logging.logback, 此路径下有四个xml配置文件,实际上可以看作一个,因为base.xml引用了其他三个文件。具体的关系,可以参考这篇文章:http://www.jianshu.com/p/077f437eaaca
在resources下创建logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<!-- 开发环境
springProfile标签是springboot提供的特性,name属性就是在application.properties中配置的spring.profiles.active -->
<property name="CONSOLE_LOG_DEV" value="${CONSOLE_LOG_DEV:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} [%L] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<springProfile name="dev">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_DEV}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<!--<logger name="org.hibernate.type" level="TRACE"/>-->
<!-- root标签属于Logger对象的一种,因为logger是继承的,root是作为logger的默认配置,相当于父类 -->
<root level="info">
<appender-ref ref="CONSOLE" />
</root>
</springProfile>
<!-- 测试环境 -->
<property name="PATTERN" value="%-12(%d{yyyy-MM-dd HH:mm:ss.SSS}) |-%-5level [%thread] %c [%L] -| %msg%n" />
<springProfile name="test">
<!-- 每天产生一个文件 -->
<appender name="TEST-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 文件最大保存历史数量 -->
<MaxHistory>100</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>${PATTERN}</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<root level="info">
<appender-ref ref="TEST-FILE" />
</root>
</springProfile>
</configuration>
配置文件中的class属性,在官网文档中有介绍。
参考
- http://www.jianshu.com/p/077f437eaaca
- http://www.cnblogs.com/lspz/p/6473686.html
- https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html
文章有错或提问可以反馈到 https://gitee.com/icng/jspBook/issues/IFYZD