Я работаю над приложением, которое состоит из общего планировщика на основе кварца и CycledJob, запущенного с использованием CronTriggers. Целью приложения является обработка входных данных из разных почтовых ящиков в зависимости от страны происхождения.
В зависимости от страны, из которой оно поступило (например, США, Великобритания, FR и т. Д.), Приложение запускает один поток задания для запуска цикла обработки каждой страны, поэтому будет рабочий поток в Великобритании, один для США, Франции и т. д. При форматировании вывода в log4j, я использую параметр потока, поэтому он выдает [ApplicationName_Worker-1], [ApplicationName_Worker-2] и т. д. Попробуйте, как я мог, я не могу найти способ для именования потоков так как они вышли из Кварцевых Нитевых Бассейнов. Хотя я мог бы пойти дальше, чтобы расширить Quartz, я бы хотел разработать другое решение вместо того, чтобы возиться со стандартной библиотекой.
Вот проблема: при использовании log4j я хотел бы, чтобы все элементы журнала из потока США выводились в файл только для США, аналогично для каждой из потоков страны. Мне все равно, если они останутся в одном объединенном ConsoleAppender, разделение FileAppender - это то, что мне нужно. Я уже знаю, как указать несколько файловых приложений, и моя проблема в том, что я не могу различить в зависимости от страны. В приложении имеется более 20 классов, которые могут находиться в цепочке выполнения, очень немногие из которых я хочу обременять знаниями о передаче дополнительного параметра «context» через КАЖДЫЙ метод ... Я рассмотрел шаблон Стратегии, расширяющий Класс-оболочка log4j, но если я не смогу сообщить каждому классу в цепочке, в каком потоке он параметризует вызов логгера, это кажется невозможным. Без возможности назвать поток также создает проблему (иначе это будет легко!).
Итак, вот вопрос: какой будет предложенный подход, позволяющий многим подчиненным классам в приложении, каждый из которых используется для каждого отдельного потока, обрабатывать входные данные, знать, что они находятся в контексте потока определенной страны, когда они регистрируют
Удачи в понимании, и, пожалуйста, задавайте уточняющие вопросы! Я надеюсь, что кто-то сможет помочь мне найти достойный способ справиться с этим. Все предложения приветствуются.