Apache Log4j Logging с определенным часовым поясом - PullRequest
10 голосов
/ 02 февраля 2012

Я хочу, чтобы журнал содержал записи о дате определенного часового пояса.Есть ли способ заставить часовой пояс в log4j.properties?

Теперь я использую JDK 1.5, поскольку вы уже знаете, что в JDK 1.5 есть ошибка часового пояса, которая устранена в JDK 1.5.В случае JDK 1.5 по умолчанию отображается часовой пояс GMT.Я хочу настроить в Log4j мой конкретный часовой пояс.

Ответы [ 6 ]

16 голосов
/ 02 февраля 2012

Это позволит вам видеть информацию о часовом поясе в каждой строке вашего журнала:

%d{yyyy-MM-dd/HH:mm:ss.SSS/zzz}

Хитрость заключается в том, чтобы включить в шаблон 'zzz', поскольку согласно Javadoc для java.text.SimpleDateFormat (http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html) это код для часового пояса. Log4J использует те же правила, что и SimpleDateFormat.

Более подробная информация содержится в Javadoc Log4J:

http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

Найдите строку в таблице, где «символом преобразования» является буква «d».

4 голосов
/ 02 августа 2013

Лучший способ - использовать Apache Extras ™ для Apache log4j ™ И замените Normal PatternLayout на org.apache.log4j.EnhancedPatternLayout, выполнив следующее при использовании файла свойств:

//log4j.appender.xxx.layout = org.apache.log4j.PatternLayout
//Replaced by
log4j.appender.xxx.layout = org.apache.log4j.EnhancedPatternLayout

Затем вы можете использовать% d {ISO8601} {GMT} вместо% d в ConversionPattern для отображения вашей даты в формате GMT. Любой часовой пояс может быть указан вместо GMT

2 голосов
/ 11 марта 2018

Для этого есть три шага:

1) Добавьте log4j-extras зависимость здесь

2) Установите макет в EnhancedPatternLayout: log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout (замените stdout на любой используемый вами appender)

3) Добавьте часовой пояс в фигурные скобки после даты и времени log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}{IST} %-5p %c{1}:%L - %m%n (Здесь IST в моем случае)

Вы можете обратиться к списку идентификаторов часовых поясов, доступных в java здесь или здесь

0 голосов
/ 22 июня 2016

Вы можете добавить следующую строку

log4j.appender.S.layout.ConversionPattern= %d{yyyy-MM-dd HH:mm:ss zzz}{GMT} %-5p [%t][%c:%M(%L)] %m%n
0 голосов
/ 02 февраля 2012

Включите аргумент date в ваш ConversionPattern.Из документации PatternLayout:

date -

Используется для вывода даты события регистрации в местном часовом поясе,Для вывода даты в универсальном времени используйте шаблон %utcdate.За спецификатором преобразования даты может следовать спецификатор формата даты, заключенный в фигурные скобки.Например, %date{HH:mm:ss,fff} или %date{dd MMM yyyy HH:mm:ss,fff}.Если спецификатор формата даты не указан, то предполагается формат ISO8601 (Iso8601DateFormatter).

Спецификатор формата даты допускает тот же синтаксис, что и строка шаблона времени ToString.

Для лучших результатов рекомендуется использовать форматеры даты log4net.Их можно указать, используя одну из строк «ABSOLUTE», «DATE» и «ISO8601» для указания AbsoluteTimeDateFormatter, DateTimeDateFormatter и соответственно Iso8601DateFormatter.Например, %date{ISO8601} или %date{ABSOLUTE}.

Эти специальные средства форматирования даты работают значительно лучше, чем ToString.

.
0 голосов
/ 02 февраля 2012

Используйте org.apache.log4j.helpers.DateLayout в качестве класса макета и свойство timeZone в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...