假设我有两个按Quartz-Scheduler计划的任务
到目前为止,这两个作业的日志输出都被转储在同一个日志文件中。我想将这两个作业的输出记录到两个不同的文件中。
所以在一天结束的时候,我想有三个不同的日志文件
谢谢
发布于 2013-01-16 19:26:32
如果切换到logback是一种选择,那么您所需要的就是内置:MDC和筛选装载机。首先,在每个作业中添加这个try- First子句(您可以使用作业侦听器来避免重复):
public void execute(JobExecutionContext context) {
MDC.put("jobId", "job1");
try {
//do all the work here
} finally {
MDC.remove("jobId");
}
}重要的是将所有代码放在try中,而不是在之前或之后。一旦你的工作做好了准备,把它放到logback.xml中
<appender name="SIFT" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>jobId</key>
<defaultValue>unknown</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${jobId}" class="ch.qos.logback.core.FileAppender">
<file>logfile-${jobId}.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d [%thread] %level %mdc %logger{35} - %msg%n</pattern>
</layout>
</appender>
</sift>
</appender>它将“只起作用”。
发布于 2013-01-16 09:00:46
您可以拥有两个log4j属性文件并进行如下配置
public class Job1 {
static Logger log = Logger.getLogger(Job1.class);
Job1() {
PropertyConfigurator.configure("log4j.properties");
log.info("Job1 initilized");
}
}
public class Job2 {
static Logger log = Logger.getLogger(Job2.class);
Job2() {
PropertyConfigurator.configure("log4j1.properties");
log.info("Job2 initilized");
}
}在log4j.properties中,指定log4j.appender.R.File=logfile-job1.log和log4j1。属性指定log4j.appender.R.File=logfile-job2.log Thats。
https://stackoverflow.com/questions/14353285
复制相似问题