日志log

2018-06-09  本文已影响0人  wanggs

日志用来记录用户操作、系统运行状态等,是一个系统的重要组成部分

Java中常用的日志组件
Log4j (http://logging.apache.org/
Logback(http://logback.qos.ch/
log4j.properties
# 输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# 格式
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
# 从这个级别开始输出
log4j.rootLogger=DEBUG, A1

测试

public class Log4jTestCase {

    @Test
    public void testLog() {
        Logger logger = LoggerFactory.getLogger(Log4jTestCase.class);

        logger.trace("{}-{} trace message","tom","hello");
        logger.debug("debug message");
        logger.info("info message");
        logger.warn("warn message");
        logger.error("error message");

    }
}


log4j.properties 写入文件中

# 文件接口完全限定名
log4j.appender.fout=org.apache.log4j.FileAppender
# 输出格式
log4j.appender.fout.layout=org.apache.log4j.PatternLayout
log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
# 文件地址
log4j.appender.fout.file=C:/logs/system.log
# 输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
# 日志格式
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
# 输出级别
log4j.rootLogger=DEBUG, A1,fou

以天为单位生成日志文件

# 按天输出
log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender
# 格式
log4j.appender.fout.layout=org.apache.log4j.PatternLayout
log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
log4j.appender.fout.DatePattern='.'yyyy-MM-dd
# 输入文件地址
log4j.appender.fout.file=C:/logs/x.log

根据日志级别存放的不同的位置

log4j.appender.fout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fout.layout=org.apache.log4j.PatternLayout
log4j.appender.fout.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
log4j.appender.fout.DatePattern='.'yyyy-MM-dd
# 级别 控制台和文件输出的日志级别不同
log4j.appender.fout.Threshold=INFO
log4j.appender.fout.file=C:/logs/x.log
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%p](%d)---%l--%m\r\n
log4j.rootLogger=DEBUG, A1,fout

线上使用

# dev model
log4j.rootLogger=DEBUG,stdout

# online model
#log4j.rootLogger=INFO,INFO_LOG,ERROR_LOG

log4j.appender.ERROR_LOG=org.apache.log4j.DailyRollingFileAppender
#! change with Linux dir
log4j.appender.ERROR_LOG.File=c\:/jcweb/error/error.log
log4j.appender.ERROR_LOG.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.ERROR_LOG.Threshold = ERROR
log4j.appender.ERROR_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.ERROR_LOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %p [%t] %l - %m%n

log4j.appender.INFO_LOG=org.apache.log4j.DailyRollingFileAppender
#! change with Linux dir
log4j.appender.INFO_LOG.File=c\:/jcweb/info/info.log
log4j.appender.INFO_LOG.DatePattern='.'yyyy-MM-dd'.log'
log4j.appender.INFO_LOG.Threshold = INFO
log4j.appender.INFO_LOG.layout=org.apache.log4j.PatternLayout
log4j.appender.INFO_LOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %p [%t] %l - %m%n

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %p [%t] %l - %m%n

logback

slf4j

image.png
输出日志到控制台
logback.xml

http://logback.qos.ch/manual/configuration.html


<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>

测试

image.png
输出日志到文件中
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<appender name="file" class="ch.qos.logback.core.FileAppender">
<!--日志文件地址-->
<file>D:/logback.log</file>
<!--追加模式-->
<append>true</append>
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="file" />
</root>
</configuration>
按天输出日志到文件
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<property name="LOG_HOME" value="D:/logs"/>
<appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名-->
<FileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd}.log</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="rolling" />
</root>
</configuration>
日志过滤器
<appender name="file" class="ch.qos.logback.core.FileAppender">
<!--日志文件地址-->
<file>${LOG_HOME}/logback.log</file>
<!--追加模式-->
<append>true</append>
<!--日志级别过滤-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>%d{MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>

同时将日志输出到多个Appender
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="file" />
</root>
更改不同package的日志显示级别
<logger name="org.hibernate.SQL" level="DEBUG" />
上一篇下一篇

猜你喜欢

热点阅读