7.Logback主要标签
Logback主要标签说明
- Logger: 日志的记录器,主要用于存放日志对象,也可以用来定义日志的类型和级别等。
- appender:用于指定日志输出的目的地,也就是输出的媒介。这个媒介可以是控制台,也可以是文件,还可以是远程套接字服务器等。
- layout:用于格式化日志输出的格式。
Spring整合Logback之后,Logback会默认去寻找文件进行加载,它的加载顺序为:
- 编译时指定
java -Dlogback.configurationfile=xxx/xxx.xml
- 加载classpath下的logback.groovy文件
- classpath下的logback-test.xml文件
- classpath下的logback.xml文件
- 若没有以上文件,若jdk是1.6以上,则会调用Service Loader查找com.qos.logback.class.spi.Configurator这个接口的第一个实现类
- 如果以上都没有,则按照ch.qos.logback.classic.BasicConfigurator来输出,这个类设置的是直接在控制台输出。
- logback在eclipse中经常会乱报错,改了很多次都没辙,后来改回原来的反而好了。。。
- 在类上方使用
@Slf4j
注解以后就可以不用创建logger对象,直接使用log即可。除了Logback之外,还需要添加依赖包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
- 然后:
1> 在https://projectlombok.org/download 下载Lombok.jar文件
2> 将lombok文件放到eclipse安装目录
3> 然后win+R输入cmd进入cmd控制台,进入到eclipse安装目录下,输入以下命令:
java -jar lombok.jar
4> 在跳出来的窗口中首先选Specify location按钮,选择eclipse安装目录,然后点击Install/update
5> 安装成功后,退出,重启eclipse
Logback配置:
<?xml version="1.0" encoding="UTF-8"?>
<!-- scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。
scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration debug="false" scan="true" scanPeriod="60 seconds" >
<!-- <property> :用来定义定义参数常量,它有两个属性name和value,通过<property>定义的值会被插入到logger上下文中,可以使“${}”来使用变量。 -->
<!-- 日志输出有五个级别:trace - debug - info - warn - error -->
<property name="log.level" value="debug" />
<!-- 文件最多保留30天 -->
<property name="log.maxHistory" value="30" />
<!-- catalina.base:tomcat实例的根目录 -->
<property name="log.filePath" value="${catalina.base}/o2o/logs/webapps" />
<!-- 输出格式:d%表示时间格式,%thread表示运行线程,%-5level表示缩进5位显示级别,%logger{50} - %msg表示哪一个类输出的信息,%n为换行 -->
<property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n" />
<!-- appender:负责写日志的组件,它有两个必要属性name和class。name指定appender名称,class指定appender的全限定名 -->
<!-- 控制台输出日志设置 -->
<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- DEBUG日志设置 -->
<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${log.filePath}/debug.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>
${log.filePath}/debug/debug.%d{yyyy-MM-dd}.log.gz
</fileNamePattern>
<!-- 文件最大保存时间天数 -->
<maxHistory>
${log.maxHistory}
</maxHistory>
</rollingPolicy>
<!-- encoder:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- ERROR日志设置 -->
<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${log.filePath}/info.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>
${log.filePath}/info/info.%d{yyyy-MM-dd}.log.gz
</fileNamePattern>
<!-- 文件最大保存时间天数 -->
<maxHistory>
${log.maxHistory}
</maxHistory>
</rollingPolicy>
<!-- encoder:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- INFO日志设置 -->
<!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 文件路径 -->
<file>${log.filePath}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 文件名称 -->
<fileNamePattern>
${log.filePath}/error/error.%d{yyyy-MM-dd}.log.gz
</fileNamePattern>
<!-- 文件最大保存时间天数 -->
<maxHistory>
${log.maxHistory}
</maxHistory>
</rollingPolicy>
<!-- encoder:既对日志进行格式化,还复制将日志输出到相应的载体中 -->
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<!-- 级别过滤器 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<logger name="com.uuunl.o2o" level="${log.level}" additivity="true">
<appender-ref ref="debugAppender"/>
<appender-ref ref="infoAppender"/>
<appender-ref ref="errorAppender"/>
</logger>
<root level="INFO">
<appender-ref ref="consoleAppender"/>
</root>
</configuration>