У меня есть веб-приложение, которое после запуска хранит сервер локальный часовой пояс в глобальном статическом участнике и затем устанавливает DefaultTimeZone JVM к GMT.
Во время запуска log4j регистрирует сообщения в часовом поясе значения по умолчанию сервера.
Теперь, когда я изменяю свой уровень журнала в log4j.properties, уровень журнала изменяется динамично и теперь сообщения журналов log4j во время GMT.
Мое требование состоит в том, чтобы всегда регистрировать сообщения в зоне местного времени сервера.
Как я могу достигнуть этого в своем сценарии? любые указатели будут действительно цениться.
Спасибо
Теперь, когда я изменяю свой уровень журнала в log4j.properties, уровень журнала изменяется динамически
Это означает, что вы настроили log4j для отслеживания изменений в файле конфигурации, конфигурация, которая является не рекомендуется для веб-приложений (см. Также этот связанный вопрос SO ).
Происходит что-то вроде этого
TimeZone.getDefault ()
возвращает часовой пояс машины Я бы предложил здесь несколько вариантов:
TimeZone getMyAppDefaultTimeZone ()
. Изменение значений по умолчанию для всей JVM на то, что требуется только коду вашего приложения, может иметь гораздо более серьезные непредвиденные последствия.
Получите исходный код используемой вами версии log4j и исследуйте используемый вами Appender, чтобы определить, где генерируется временная метка, которую вы видите. Затем выясните, какой код вам нужно выполнить в этом месте, а затем обновите свой вопрос.