谈谈日志

Posted jzzgci

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈日志相关的知识,希望对你有一定的参考价值。

谈谈日志:

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

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

还有一点就是生产环境上严禁使用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>

 

以上是关于谈谈日志的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

谈谈日志

改善既有代码的设计结合真实的代码案例场景,谈谈我的一些实施方法!

《我要进大厂系列 四》-谈谈你了解的日志框架

webstorm代码片段的创建

从实战出发,谈谈 nginx 信号集