谈谈日志:
一般而言,一个接口或者一段程序,其入口要有日志,记录传入的数据是什么;
部分重要的处理逻辑要有日志;
程序出口也要有日志,记录其最终的处理结果。
这样在解决生产上的问题时,方便定位问题。比凭空想象的好。
还有一点就是生产环境上严禁使用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>
来源:https://www.cnblogs.com/jzzgci/p/12294095.html