我正在將我的應用程序從log4j
遷移到log4j2
。請在下面的應用程序當前線程中輸入需要輸入的類(例如模式爲mode1
),並將其附加到日誌文件名(例如log_mode1.log
)並創建appender並更新日誌文件。如何在log4j2中實現多文件appender
類:
public class MultiFileAppender extends AppenderSkeleton {
...
@Override
protected void append(LoggingEvent event) {
...
}
@Override
public void close() {
}
@Override
public boolean requiresLayout() {
...
}
}
中的log4j.xml Appender的內容:
<appender name="TEST_MULTIFILE" class="com.test.it.logging.MultiFileAppender">
<param name="File" value="${LOGS}/test/test_%id%.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="5"/>
<param name="Encoding" value="UTF-8"/>
</appender>
如何獲得在Java中這些參數,創建多文件的appender像log4j2上面的配置?請幫忙。謝謝。
請問這個'MultiFileAppender'的目的是什麼?按照名稱,聽起來好像您要將相同的日誌條目寫入多個文件。如果是這樣,你不需要一個自定義類來完成它,它可以通過在log4j和log4j2中配置標準appender來完成。但是,也許你有一個無法解決的特殊要求? –
非常感謝回覆。有不同的模式(比如mode1,mode2,mode3 ..)將從當前正在運行的線程中獲取,並且日誌內容將轉到名稱中包含模式(例如test_mode1.log)的相應日誌文件。 – sridhar
您可以根據模式創建不同的Logger對象名稱,並使用它來控制將日誌語句寫入哪個文件?如果您通常使用'LogManager.getLogger()'獲取名爲'my.package.Test'的記錄器,則可以執行LogManager.getLogger(Test.class.getName()+「.mode1」)'來獲取一個名爲logger 'my.package.Test.mode1'等等。 –