当前位置: 首页 > 知识库问答 >
问题:

Quartz Scheduler:将单独作业的输出记录到不同的日志文件

柯昱
2023-03-14

假设我用Quartz-Scheduler调度了2个作业

  • 作业1
  • 作业2

到目前为止,两个作业的日志输出都转储在同一个日志文件中。我想将这2个作业的输出记录到两个不同的文件中

  • 日志文件-job1.txt
  • 日志文件-job2.txt
  1. Quartz-Scheduler(主线程日志文件,单独)
  2. jogfile-job1.txt(单独的日志文件)
  3. jogfile-job2.txt(单独的日志文件)

谢谢你

共有1个答案

杜霍英
2023-03-14

如果切换到logback是一个选项,那么您所需要的就是内置的:MDC和筛选附加项。首先在您的每个作业中添加这个try-finally子句(您可以使用作业侦听器来避免重复):

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>

它会“起作用”。

 类似资料:
  • 我使用带有路由附加器和包装器的log4j2xml配置。我将传递不同的appender,以记录项目不同部分的不同文件。我的配置看起来像这样。 问题是,我在第二个路由中获得了外部库日志(那些没有附加程序的)和我的项目日志,尽管我只想要外部日志。

  • ,日志记录将进入一个文件; (路径)/service_name/service_name.log 我想用logback复制这种行为,但在logback.xml配置中获取“logger”名称时遇到了真正的困难。它可以在log encoder.pattern中看到,即“%d%-5level%logger{35}-%msg%n”。

  • 问题内容: 我对jdk日志记录配置有疑问。我有一个使用JDK Logging输出消息的EJB(已部署到glassfish中)。因此,我使用具有以下代码的命名记录器: 我知道可以通过将以下行添加到Glassfish的logging.properties文件中来为记录器配置日志级别: 但是,如何为记录器指定输出文件?我想将来自名为“ org.imixs.workflow”的记录器的所有消息放入单独的文

  • 问题 你希望将单元测试的输出写到到某个文件中去,而不是打印到标准输出。 解决方案 运行单元测试一个常见技术就是在测试文件底部加入下面这段代码片段: import unittest class MyTest(unittest.TestCase): pass if __name__ == '__main__': unittest.main() 这样的话测试文件就是可执行的,并且会将

  • 问题内容: 我正在使用log4j登录我的应用程序。我正在尝试在不同文件中使用不同级别的日志,但是出了点问题。对于解决此问题的任何帮助,我们将不胜感激。 问题答案: log4j附加程序的标准行为是,它们以其阈值级别 或更高 的阈值记录所有消息,即具有阈值INFO的附加器将记录INFO,WARN,ERROR和FATAL消息,但不记录DEBUG。如果你想记录 只有 INFO信息,但不会发出警告及以上,然