【需求】列印日志内容到控制台
女朋友今天接到的需求是測試一個方法的執行時間,然後就在這個方法中第一行和最後一行中輸出了一下目前時間的long值,以此來判斷出方法的執行時間。
但,終究還是有問題,測試上列印的日志好好的,結果一上生産環境,就完蛋了,根本就在主日志檔案中沒有找到相關的日志,悲哀。
【問題】日志元件在測試環境和生産環境列印不一緻
這裡的問題就是生産環境和測試環境的日志列印不一緻問題,其實也是很好定位的,隻需要檢視log日志用的是哪個元件,随後判斷出log元件的配置檔案,檢視生産和測試環境下列印規則是否一緻。
這個問題可能也不是我說的這種情況,但是恰巧這個解決方案正好解決她現在的問題,雖然有點無腦。
【結果】
logback元件的使用,在于logger.xml中的配置規則,一般都會根據不同的環境,配置設定不同的列印規則。
我大概列一下logback的相關配置吧,這是我項目中常用的一些規則。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<contextName>logback</contextName>
<springProperty scope="context" name="logPath" source="logging.path"/>
<property name="log.path" value="${logPath}" />
<!--輸出到控制台-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 時間滾動輸出 level為 INFO 日志 -->
<appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/log_info.log</file>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
<maxHistory>30</maxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>info</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<springProfile name="test">
<logger name="com.wingtra.ymt" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
<springProfile name="dev">
<logger name="com.wingtra.ymt" level="debug"/>
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="INFO_FILE"/>
</root>
</springProfile>
<springProfile name="pro">
<root level="info">
<appender-ref ref="INFO_FILE"/>
</root>
</springProfile>
</configuration>
這個是logback.xml的配置,在這裡面使用springProfile來指定環境參數即可。