日志打印
1.异步打印
<appender name="ERROR_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/error.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/error.log.%d{yyyy-MM-dd}</fileNamePattern> <maxHistory>3</maxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>${ENCODER_PATTERN}</pattern> <charset>UTF-8</charset> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 异步 --> <appender name="ERROR_APPENDER_ASYNC" class="ch.qos.logback.classic.AsyncAppender"> <discardingThreshold>0</discardingThreshold> <queueSize>2048</queueSize> <appender-ref ref="ERROR_APPENDER"/> </appender>
<logger name="RPC_DETAIL_LOGGER" level="INFO" additivity="false">
<appender-ref ref="RPC_DETAIL_APPENDER_ASYNC"/>
</logger>
<root level="INFO">
<appender-ref ref="INFO_APPENDER_ASYNC"/>
<appender-ref ref="WARN_APPENDER_ASYNC"/>
<appender-ref ref="ERROR_APPENDER_ASYNC"/>
</root>
2.日志信息中总是打印行号可能导致系统缓慢
日志信息中总是打印行号可能导致系统缓慢
打印行号需要进行抛出,抛出多了系统会缓慢;
1、LineOfCallerConverter
public class LineOfCallerConverter extends ClassicConverter {
public String convert(ILoggingEvent le) {
StackTraceElement[] cda = le.getCallerData();
if (cda != null && cda.length > 0) {
return Integer.toString(cda[0].getLineNumber());
} else {
return CallerData.NA;
}
}
}
2、LoggingEvent
public StackTraceElement[] getCallerData() {
if (callerDataArray == null) {
callerDataArray = CallerData
.extract(new Throwable(), fqnOfLoggerClass, loggerContext.getMaxCallerDataDepth(), loggerContext.getFrameworkPackages());
}
return callerDataArray;
}