1. 程式人生 > >log4j2配置檔案中,關於日誌輸出設定

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(秒)