log4j2配置檔案中,關於日誌輸出設定
<?xml version="1.0" encoding="UTF-8"?> <!-- status : 這個用於設定log4j2自身內部的資訊輸出,可以不設定,當設定成trace時,會看到log4j2內部各種詳細輸出 monitorInterval : Log4j能夠自動檢測修改配置檔案和重新配置本身, 設定間隔秒數。 --> <Configuration status="WARN" monitorInterval="60"> <Properties> <!-- 配置日誌檔案輸出目錄 --> <property name="root_path" value="/Log/server" /> <property name="backup_path" value="${root_path}/backup" /> <property name="log_file_prefix" value="${sys:log4j2.fileName}"></property> <property name="log_charset">UTF-8</property> <!--保留90天的日誌資訊--> <property name="max_num">90d</property> <property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %class{1.}:%L(%M) - %msg%xEx%n</property> </Properties>
<Appenders> <!--這個輸出控制檯的配置--> <Console name="STDOUT" target="SYSTEM_OUT"> <!-- 控制檯只輸出level及以上級別的資訊(onMatch),其他的直接拒絕(onMismatch) --> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 輸出日誌的格式 --> <PatternLayout charset="${log_charset}" pattern="${log_pattern}"/> </Console>
<!-- 設定日誌格式並配置日誌壓縮格式(business.log.年份.zip) --> <RollingRandomAccessFile name="BUSINESS_FILE" immediateFlush="false" fileName="${root_path}/${log_file_prefix}_system.log" filePattern="${backup_path}/${log_file_prefix}_system.log.%d{yyyy-MM-dd-HH}.zip"> <!-- %d{yyyy-MM-dd HH:mm:ss, SSS} : 日誌生產時間 %p : 日誌輸出格式 %c : logger的名稱 %m : 日誌內容,即 logger.info("message") %n : 換行符 %C : Java類名 %L : 日誌輸出所在行數 %M : 日誌輸出所在方法名 hostName : 本地機器名 hostAddress : 本地ip地址 --> <PatternLayout charset="${log_charset}"> <pattern>${log_pattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> <DefaultRolloverStrategy> <Delete basePath="${backup_path}" maxDepth="1"> <IfFileName glob="${log_file_prefix}_system.log.*.zip" /> <IfLastModified age="${max_num}" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> <!-- 設定日誌格式並配置日誌壓縮格式(exception.log.年份.zip) --> <RollingRandomAccessFile name="EXCEPTION_FILE" immediateFlush="false" fileName="${root_path}/${log_file_prefix}_exception.log" filePattern="${backup_path}/${log_file_prefix}_exception.log.%d{yyyy-MM-dd-HH}.zip"> <PatternLayout charset="${log_charset}"> <pattern>${log_pattern}</pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> </Policies> <DefaultRolloverStrategy> <Delete basePath="${backup_path}" maxDepth="1"> <IfFileName glob="${log_file_prefix}_exception.log.*.zip" /> <IfLastModified age="${max_num}" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> </Appenders>
<Loggers> <!-- 配置日誌的根節點 --> <asyncRoot level="info"> <appender-ref ref="STDOUT"/> </asyncRoot>
<asyncLogger name="systemLogger" level="info" additivity="false" includeLocation="true"> <appender-ref ref="BUSINESS_FILE"/> </asyncLogger> <asyncLogger name="exceptionLogger" level="info" additivity="false" includeLocation="true"> <appender-ref ref="EXCEPTION_FILE"/> </asyncLogger> </Loggers>
</Configuration>
其中 【sys:log4j2.fileName】可以在系統引數中設定或程式啟動時指定,而<DefaultRolloverStrategy> 標籤屬性的max只是針對SizeBaseDTriggeringPolicy策略屬性起作用,而對於其他屬性,需要設定刪除屬性標籤<Delete>,如上面的例子中,下列設定
age的大小單位可以設定為d(天),h(小時),m(分鐘),s(秒)