我正在开发一个基于Quartz的调度程序,其中包括使用CronTriggers运行的“CycledJob”。该应用程序的目的是根据来源国家处理来自不同电子邮件收件箱的输入。
根据输入的国家(例如美国、英国、法国等),应用程序触发一个作业线程来运行每个国家的处理周期,因此将有一个英国工作者线程、一个美国工作者线程、一个法国工作者线程等。在将输出格式化为log4j时,我使用线程参数,因此它会发出[ApplicationName_Worker-1]、[ApplicationName_Worker-2]等。尽管我可以扩展Quartz,但我想找到另一种解决方案,而不是干扰标准库。
问题在于:使用log4j时,我希望所有来自美国线程的日志项都输出到一个仅限美国的文件中,对于每个国家线程也是如此。我不介意它们留在一个统一的ConsoleAppender中,我想要的是FileAppender分割。我已经知道如何指定多个文件附加器等,我的问题是我无法根据国家区分它们。应用程序中有20多个类可以在执行链上使用,其中很少有我想要负担通过每个方法传递额外“上下文”参数的知识...我考虑了扩展log4j包装类的策略模式,但除非我可以让每个类知道它在哪个线程上以参数化日志记录器调用,否则似乎不可能。没有能够命名线程也会带来挑战(否则这将变得很容易!)。
因此,问题是:如何建议一种方法,使应用程序中的许多下级类,在处理输入时,每个不同的线程都知道它们处于特定国家线程的上下文中?
祝你好运理解,并请提出澄清问题!我希望有人能帮助我找到一个合适的方法来解决这个问题。欢迎所有建议。
根据输入的国家(例如美国、英国、法国等),应用程序触发一个作业线程来运行每个国家的处理周期,因此将有一个英国工作者线程、一个美国工作者线程、一个法国工作者线程等。在将输出格式化为log4j时,我使用线程参数,因此它会发出[ApplicationName_Worker-1]、[ApplicationName_Worker-2]等。尽管我可以扩展Quartz,但我想找到另一种解决方案,而不是干扰标准库。
问题在于:使用log4j时,我希望所有来自美国线程的日志项都输出到一个仅限美国的文件中,对于每个国家线程也是如此。我不介意它们留在一个统一的ConsoleAppender中,我想要的是FileAppender分割。我已经知道如何指定多个文件附加器等,我的问题是我无法根据国家区分它们。应用程序中有20多个类可以在执行链上使用,其中很少有我想要负担通过每个方法传递额外“上下文”参数的知识...我考虑了扩展log4j包装类的策略模式,但除非我可以让每个类知道它在哪个线程上以参数化日志记录器调用,否则似乎不可能。没有能够命名线程也会带来挑战(否则这将变得很容易!)。
因此,问题是:如何建议一种方法,使应用程序中的许多下级类,在处理输入时,每个不同的线程都知道它们处于特定国家线程的上下文中?
祝你好运理解,并请提出澄清问题!我希望有人能帮助我找到一个合适的方法来解决这个问题。欢迎所有建议。