Подтвердить что ты не робот

Make Logback включает "T" между датой и временем в формате "% date" для строгого соответствия ISO 8601

По умолчанию кодер Logback использует формат даты , аналогичный стандарт ISO 8601. Но ему не хватает "Т" посередине между датой и временем. T упрощает парсинг и требуется по стандарту (если только частные стороны не договорятся об ином).

Есть ли какой-то трюк в , чтобы вернуть журнал в T?

Это...

2006-10-20T14:06:49,812

вместо этого...

2006-10-20 14:06:49,812

Я предполагаю, что я мог бы повторно создать весь формат при добавлении "Т", но мне интересно, есть ли более простой способ.

4b9b3361

Ответ 1

Отчет об ошибке

Там сообщается об ошибке на странице журнала JIRA. С 24/Feb/10 3:57 PM не было большого развития. Я только что голосовал, чтобы привлечь внимание. Вы тоже должны.

Я бы предоставил свой собственный формат даты, соответствующий ISO 8601.

Вставить "T"

Это должно сделать трюк:

<pattern>%d{"yyyy-MM-dd'T'HH:mm:ss,SSS"} [%thread] %-5level %logger{35} - %msg %n
</pattern>

"" Нужно сделать , работу, как описано в документации.

Этот элемент <pattern> принадлежит к настройке конфигурации журнала. Вот пример файла logback.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <!-- Strangely, Logback lacks a built-in formatter for ISO 8601. So, roll our own.  -->
            <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </layout>
    </appender>

    <logger name="com.example" level="TRACE"/>


    <root level="debug">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

Часовой пояс

Чтобы более полно соответствовать ISO 8601, и для более удобного ведения журнала, вы должны включить часовой пояс.

EDIT (Michael-O, 2014-06-15): Это неверно, часовой пояс является абсолютным необязательным.

Чтобы включить часовой пояс, передайте второй аргумент (см. Doc) на %date. Пропустите правильное имя часового пояса. Избегайте трех или четырех буквенных кодов часовых поясов, таких как "EST", поскольку они не являются ни уникальными, ни стандартизированными. Например, пройдите Australia/Perth. Обычно для ведения журнала мы хотим время UTC (GMT), что означает без какого-либо смещения. В этом случае пройдите UTC.

Вы можете отображать смещение часового пояса как количество часов и минут как часть даты в журнале. Добавьте X чтобы отобразить смещение часового пояса как часть значения даты.

Эта…

%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX", UTC}

... производит...

2014-04-16T09:59:24,009Z

XXX работает в Java 7 и 8. В более ранних версиях Java вы можете использовать Z в определении формата для создания номера смещения, которому не хватает двоеточия.