日志log

作者: wanggs | 来源:发表于2018-06-09 23:14 被阅读0次

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

    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");
    
        }
    }
    

    • %m 输出代码中指定的消息

    • %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

    • %r 输出自应用启动到输出该log信息耗费的毫秒数

    • %c 输出所属的类目,通常就是所在类的全名

    • %t 输出产生该日志事件的线程名

    • %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”

    • %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd
      HH:mm:ss , SSS}

    • %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。


    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" />
    

    相关文章

      网友评论

          本文标题:日志log

          本文链接:https://www.haomeiwen.com/subject/zzbxeftx.html