但我1.x時不是寫xml.....所以 更增加了轉換的痛苦
以下是原來的log4j.properties
log4j.rootLogger=ERROR, consoleAppender
log4j.appender.consoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.consoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleAppender.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss:SSS} [%t] %-5p %c %m%n
log4j.logger.myLog= INFO, A1
log4j.additivity.myLog = false
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=./logs/myLog.log
log4j.appender.A1.DatePattern ='_'yyyy-MM-dd'.log'
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%d{yyyy/MM/dd HH:mm:ss:SSS}][%p][%C.%M-%L] %m%n
如何能daily不同檔案 試了很多次 最後寫出下面的log4j2.xml
<Configuration
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='Log4j-config.xsd'>
<Appenders>
<RollingFile name="A1" fileName="./logs/myLog.log"
filePattern="./logs/myLog_%d{yyyy-MM-dd_HH}.%i.log"> <!-- roll over every HOUR -->
<PatternLayout>
<Pattern>[%d{yyyy/MM/dd HH:mm:ss:SSS}][%p][%C.%M-%L] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="100 MB"/> <!-- roll over if log file size exceeds 100 MB -->
</Policies>
</RollingFile>
<Console name="consoleAppender" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss:SSS} [%t] %-5p %c %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="myLog" level="INFO" additivity="false">
<AppenderRef ref="A1"/>
</Logger>
<Root level="ERROR">
<AppenderRef ref="consoleAppender"/>
</Root>
</Loggers>
</Configuration>
其中幾個部份要注意:
filePattern:表示當日誌到達指定的大小或者時間,產生新日誌時,舊日誌的命名路徑。
本來以為「RollingFile」tag的屬性「filePattern」會直接對應原本的「DatePattern」
但不行...時間要改用%d{yyyy-MM-dd_HH}
為什麼比以前多了HH 我試了把HH拿掉...就不產生新檔了
而且如果要和fileName一樣的路徑 路徑部份也是要寫出來
範列中 fileName="./logs/myLog.log" 所以 filePattern="./logs/myLog_%d{yyyy-MM-dd_HH}.%i.log"
%i←指的是第幾個封存
PatternLayout:和log4j1一樣 對應到原本的「layout.ConversionPattern」
TimeBasedTriggeringPolicy 是以時間為基準觸發封存
interval:integer型,指定兩次封存動作之間的時間間隔。單位:小時
modulate:boolean型,說明是否對封存時間進行調製。若modulate=true,則封存時間將以0點為邊界進行偏移計算
本來以為我一天要一次 所以是interval:integer=24 但這樣的結果 封存的檔名HH會是23 不會是當下的時間
SizeBasedTriggeringPolicy 以檔案大小基準觸發封存
本來沒有設 但也造成產生不出新檔 案
沒有留言:
張貼留言