zoukankan      html  css  js  c++  java
  • 谈谈日志

    谈谈日志:

    一般而言,一个接口或者一段程序,其入口要有日志,记录传入的数据是什么;
    部分重要的处理逻辑要有日志;
    程序出口也要有日志,记录其最终的处理结果。

    这样在解决生产上的问题时,方便定位问题。比凭空想象的好。

    还有一点就是生产环境上严禁使用System.out输出,性能很低。原因是其输出会导致线程等待。

    而使用Logger在输出日志时是异步的。

    在记录日志时不要用+号连接日志内容 比如log.info("ddd"+abc);

    而要用log.info("ddd{}",abc);这样可以减少创建的字符串对象。

    一个spring boot的日志配置示例如下

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- 应用名称 -->
        <springProperty scope="context" name="app_name" source="spring.application.name"/>
        <!-- 日志文件保存路径 -->
        <property name="log_home" value="logs" />
    
        <!-- 控制台日志:输出全部日志到控制台 -->
        <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - ip=%X{ip} - %m - duration=%X{duration}ms - method=%X{method}%n</pattern>
            </encoder>
        </appender>
    
        <!-- 文件日志:输出指定日志到文件 -->
        <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>INFO</level>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log_home}/${app_name}.%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>14</maxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - ip=%X{ip} - %m - duration=%X{duration}ms - method=%X{method}%n</pattern>
            </encoder>
        </appender>
    
        <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${log_home}/${app_name}_error.%d{yyyy-MM-dd}.log</fileNamePattern>
                <maxHistory>14</maxHistory>
            </rollingPolicy>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%n</pattern>
            </encoder>
        </appender>
    
        <root level="info">
            <appender-ref ref="consoleLog" />
            <appender-ref ref="fileInfoLog" />
            <appender-ref ref="fileErrorLog" />
        </root>
    </configuration>
  • 相关阅读:
    spring源码阅读(一)
    多线程学习(十)
    多线程学习(九)
    多线程学习(八)
    多线程学习(七)
    多线程学习(六)
    多线程学习(五)
    多线程学习(四)
    matlab-table
    Matlab
  • 原文地址:https://www.cnblogs.com/jzzgci/p/12294095.html
Copyright © 2011-2022 走看看