log4j2 自定義配置文件,java載入


http://logging.apache.org/log4j/2.x/faq.html#separate_log_files

How do I reconfigure log4j2 in code with a specific configuration file?

 

See the below example. Be aware that this LoggerContext class is not part of the public API so your code may break with any minor release.

  1. // import org.apache.logging.log4j.core.LoggerContext;
  2.  
  3. LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
  4. File file = new File("path/to/a/different/log4j2.xml");
  5.  
  6. // this will force a reconfiguration
  7. context.setConfigLocation(file.toURI());
<?xml version="1.0" encoding="UTF-8"?>
<Configuration> 
     status="debug" monitorInterval="1800"
     <properties>  
        <property name="LOG_HOME">E://stats_collector_logs</property>  
        <!-- 日志備份目錄 -->  
        <property name="BACKUP_HOME">{LOG_HOME}/backup</property>  
        <property name="STAT_NAME">log</property> 
    </properties>  
     
    <Appenders>  
        <Console name="Console" target="SYSTEM_OUT">  
           <PatternLayout pattern="%m%n"/>
        </Console>  
        <File name="MyFile" fileName="/stats">  
             <PatternLayout pattern="- %msg%n" />
        </File>  
        
         <!-- STB發來的播放日志 -->  
        <RollingRandomAccessFile name="playLogAppender"  
            fileName="${LOG_HOME}/play_${STAT_NAME}_"  
            filePattern="${LOG_HOME}/play_${STAT_NAME}_%d{yyyy_MM_dd_HH_mm}.log">  
            <PatternLayout  
                pattern="%msg%n" />  
            <Policies>  
                <TimeBasedTriggeringPolicy interval="1"  
                    modulate="true" />  
            </Policies>  
        </RollingRandomAccessFile>  

         <!-- STB發來的播放日志 -->  
        <RollingRandomAccessFile name="viewLogAppender"  
            fileName="${LOG_HOME}/view_${STAT_NAME}_"  
            filePattern="${LOG_HOME}/view_${STAT_NAME}_%d{yyyy_MM_dd_HH_mm}.log">  
            <PatternLayout  
                pattern="%msg%n" />  
            <Policies>  
                <TimeBasedTriggeringPolicy interval="1"  
                    modulate="true" />  
            </Policies>  
        </RollingRandomAccessFile>  
        
   <!--interval,integer型,指定兩次封存動作之間的時間間隔。單位:以日志的命名精度來確定單位,比如yyyy-MM-dd-HH 單位為小時,yyyy-MM-dd-HH-mm 單位為分鍾-->
   <!--modulate,boolean型,說明是否對封存時間進行調制。若modulate=true,則封存時間將以0點為邊界進行偏移計算。比如,modulate=true,interval=4hours,那么假設上次封存日志的時間為03:00,則下次封存日志的時間為04:00,之后的封存時間依次為08:00,12:00,16:00,。。。-->
      <!-- 程序員調試日志 -->  
        <RollingRandomAccessFile name="DevLog" fileName="${LOG_HOME}/${SERVER_NAME}"  
            filePattern="${LOG_HOME}/${SERVER_NAME}.%d{yyyy-MM-dd-HH}.log">  
            <PatternLayout pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />  
            <Policies>  
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />  
            </Policies>  
        </RollingRandomAccessFile>  
        <!-- 游戲產品數據分析日志 -->  
        <RollingRandomAccessFile name="ProductLog"  
            fileName="${LOG_HOME}/${SERVER_NAME}_${STAT_NAME}"  
            filePattern="${LOG_HOME}/${SERVER_NAME}_${STAT_NAME}.%d{yyyy-MM-dd-HH}.log">  
            <PatternLayout  
                pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />  
            <Policies>  
                <TimeBasedTriggeringPolicy interval="1"  
                    modulate="true" />  
            </Policies>  
        </RollingRandomAccessFile>  
        
         <!--文件會打印出所有信息,這個log每次運行程序會自動清空,由append屬性決定,這個也挺有用的,適合臨時測試用-->
         <File name="log" fileName="log/test.log" append="false">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        
        <!--這個會打印出所有的信息,每次大小超過size,則這size大小的日志會自動存入按年份-月份建立的文件夾下面並進行壓縮,作為存檔-->
        <RollingFile name="RollingFile" fileName="logs/app.log"
                     filePattern="log/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
            <SizeBasedTriggeringPolicy size="50MB"/>
        </RollingFile>
        
          <File name="ERROR" fileName="logs/error.log">
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
        </File>
        
    </Appenders>  
    <Loggers>  
        <Logger name="PLAY_LOG" level="trace" additivity="false">  
            <AppenderRef ref="playLogAppender" />  
        </Logger>  
        <Logger name="VIEW_LOG" level="trace" additivity="false">  
            <AppenderRef ref="viewLogAppender" />  
        </Logger>  
       <Root level="debug">
                    <AppenderRef ref="Console"/>
            </Root>
    </Loggers>  
</Configuration>  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM