我需要將消息記錄到應該在運行時創建的不同日誌文件,具體取決於啓動作業時傳遞的作業參數。例如batch_id = 2014-07-01等根據批次ID彈簧批次日誌到不同的日誌文件?
我遇到了https://github.com/dsyer/log4j-utils並且在測試用例的幫助下,https://github.com/dsyer/log4j-utils/blob/master/src/test/resources/file-dispatcher.xml試圖在我的spring batch admin項目中進行配置。下面是配置
<appender name="LOGGER" class="org.springframework.util.log4j.DispatcherAppender">
<param name="propertyName" value="file" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="/var/log/st/batch.log.%x" />
</layout>
<appender-ref ref="FILE" />
</appender>
<appender name="FILE" class="org.apache.log4j.FileAppender">
<param name="file" value="/var/log/st/default.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%5p: %m%n" />
</layout>
</appender>
<root>
<priority value="info" />
<appender-ref ref="LOGGER" />
</root
,並在我的課,我使用
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
public class MyClass implements MyInterface {
Logger logger = Logger.getLogger(MyClass.class);
public void run(final String command, final long timeout) throws Exception {
NDC.push("2014-07-01");
logger.info("Running " + command);
}
}
我使用這個類來運行春季批處理作業通過Spring Batch的itemWriter命令。
它不工作,沒有創建日誌文件,如果我們手動創建並給出完整權限,則仍然沒有任何內容記錄到日誌文件中。