基本使用方法:
log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低:OFF,FATAL,ERROR,WARN,INFO,DEBUG,TRACE,ALL,一般只使用四种,从高到低有ERROR,WARN,INFO,DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件;而输出格式则控制了日志信息的显示内容。
ALL: 最低等级的,用于打开所有日志记录。
TRACE: 很低的日志级别,一般不会使用。
DEBUG: 指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。
INFO: 消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣的或者重要的信息,这个可以用于生产环境中输出程序运行的一些重要信息,但是不能滥用,避免打印过多的日志。
WARN: 表明会出现潜在错误的情形,有些信息不是错误信息,但是也要给程序员的一些提示。
ERROR: 指出虽然发生错误事件,但仍然不影响系统的继续运行。打印错误和异常信息,如果不想输出太多的日志,可以使用这个级别。
FATAL: 指出每个严重的错误事件将会导致应用程序的退出。这个级别比较高了。重大错误,这种级别你可以直接停止程序了。
OFF: 最高等级的,用于关闭所有日志记录
如果将log level设置在某一个级别上,那么比此级别优先级高的log都能打印出来。例如,如果设置优先级为WARN,那么OFF、FATAL、ERROR、WARN 4个级别的log能正常输出,而INFO、DEBUG、TRACE、 ALL级别的log则会被忽略。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
从我们实验的结果可以看出,log4j默认的优先级为ERROR或者WARN(实际上是ERROR)。
输出格式解释
%d: 日志打印的时间点,默认格式为ISO8601,也可以另外指定格式,
定义如下: %d{yyy年MM月dd日 HH时mm分ss秒SSS},则会输出:
2018年01月06日 14时47分45秒590
%p: 输出日志级别,即DEBUG,INFO,WARN,ERROR,FATAL
%-5p:表示字符小于5位,则字符居左(不加“-”号则字符居右),你可以举一反三
%c: 日志所在类的全名
%M: 日志所在方法的名字
%m: 日志信息
%n: 输出一个回车换行符
%L: 输出代码中的行号
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="20 seconds">
<property name="logName" value="vv_public_cms" />
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %c %M %L %-5level %msg%n</Pattern>
</layout>
</appender>
<appender name="LOG.ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/${logName}.log</File>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n
</Pattern>
</layout>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
保留30天的历史日志
<maxHistory>30</maxHistory>
<FileNamePattern>log/${logName}.%d{yyyy-MM-dd}.log.%i</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>300MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<appender name="LOG.WARN" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/${logName}-warn.log</File>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n
</Pattern>
</layout>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>30</maxHistory>
<FileNamePattern>log/${logName}-warn.%d{yyyy-MM-dd}.log.%i</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>300MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="LOG.ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/${logName}-error.log</File>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{80} - %msg%n
</Pattern>
</layout>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>72</maxHistory>
<FileNamePattern>log/${logName}-error.%d{yyyy-MM-dd}.log.%i</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>300MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- <appender name="SQL" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>log/${logName}-sql.log</File>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{80} - %msg%n
</Pattern>
</layout>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<maxHistory>72</maxHistory>
<FileNamePattern>log/${logName}-sql.%d{yyyy-MM-dd}.log.%i</FileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender> -->
<root level="DEBUG">
<appender-ref ref="CONSOLE" />
<appender-ref ref="LOG.ALL" />
<appender-ref ref="LOG.WARN" />
<appender-ref ref="LOG.ERROR" />
</root>
<logger name="org.apache.zookeeper" level="off" additivity="false">
</logger>
<logger name="org.springframework.jdbc.datasource" level="off" additivity="false">
</logger>
<logger name="org.apache.activemq" level="off" additivity="false" >
</logger>
</configuration>
扫描关注下面二维码获得更多有用的资源!

本文详细介绍了log4j的三个关键组件:日志优先级、输出目的地和输出格式。日志优先级包括OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL,通常使用ERROR、WARN、INFO、DEBUG。输出格式中,%d用于显示时间,%p显示日志级别,%c显示类名,%M显示方法名,%m显示日志信息,%n插入换行,%L显示行号。

被折叠的 条评论
为什么被折叠?



