最近負責的項目,需要新對接一個第三方api,在對接編碼過程中肯定少不了日誌的輸出,避免上了生產環境出問題排查困難, 由於這個項目已經在線上運作了有2-3年了,各種業務、非業務、框架燈日誌都集中在一個文件,並且查看了下生產環境的最近幾個日誌文件,發現一天的日誌接近2個G,如果需要查看新對接的第三方api業務日誌,比較麻煩。因此希望可以把這些和第三方對接的日誌生成在另外一個單獨的文件。這也就是標題中的實現按業務輸出日誌到不同的文件,下面開始講解具體的實現方案。
一、方案
二、具體實現
(1)準備階段
定義了2個appender,分別爲輸出到控制檯的appender和輸出到文件的appender
<appender name="ztripLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_DIR}/ztrip.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_DIR}/ztrip.%d{yyyy-MM-dd}.log.bak </fileNamePattern> </rollingPolicy> <encoder> <pattern>${COMMON_LOG_PATTERN}</pattern> </encoder> </appender>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> <!--[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%t] %-5level %logger{50} - %msg%n--> ${COMMON_LOG_PATTERN} </pattern> <charset>UTF-8</charset> </encoder> </appender>
默認日誌級別爲info,默認引用了上面定義的這個2個appender
<logger name="ztripLog" additivity="false" level="INFO"> <appender-ref ref="ztripLogAppender"/> <appender-ref ref="CONSOLE"/> </logger>
(2)代碼引用
通過lombok提供的註解,指定上面配置好的logger name
@Slf4j(topic = "ztripLog")
通過LoggerFactory去創建
private final static Logger ztripLogger = LoggerFactory.getLogger(ZtripConstants.ZTRIP_LOG_NAME);
(3)效果如下