log4j2配置文件動態指定日志文件名稱


按照習慣性思維,log4j2中xml中取系統屬性應該和log4j一樣,但是結果卻並不是我們想的這樣,存在一定的差別,log4j中的配置可參考 log4j配置文件動態指定日志文件名稱 。

現在就來看看到底有什么區別,java代碼這塊沒什么變化:

1         if (args.length >= 0) {
2             System.setProperty("log4fFile", args[0]);
3         } else {
4             System.setProperty("log4fFile", "runtimeTest.log");
5         }

xml 配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <configuration status="error">
 4     <appenders>
 5         <Console name="Console" target="SYSTEM_OUT">
 6             <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
 7             <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
 8         </Console>
 9         <RollingFile name="RollingFile" fileName="log/${sys:log4fFile}"
10                      filePattern="log/$${date:yyyy-MM-dd}/%d{yyyyMMddHHmmss}-${sys:log4fFile}.log">
11           <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss/} %-5p] [%t] (%c:%L) - %m%n" />
12           <Policies>
13             <TimeBasedTriggeringPolicy />
14             <SizeBasedTriggeringPolicy size="50 MB"/>
15           </Policies>
16           <DefaultRolloverStrategy max="100" />
17        </RollingFile>
18     </appenders>
19     <loggers>
20        <root level="debug">
21            <appender-ref ref="RollingFile"/>
22            <appender-ref ref="Console"/>
23        </root>
24 
25     </loggers>
26 </configuration>

哪個地方有區別 ,發現了么?

如果仔細觀察,可能會發現取值方式有一點變化  log4j中取值是${log4fFile}, log4j2中取值是${sys:log4fFile}  ,log4j2中再按照log4j的方式去取值,是取不到的。


免責聲明!

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



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