Как я могу изменить формат даты для Google Flogger (свободный API журналирования для Java)? - PullRequest
0 голосов
/ 22 марта 2019

Я пытаюсь использовать функцию Lombok @Flogger, которая должна добавить нижеприведенное примечание к классу с помощью @ Flogger.

private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass();

См. Небольшую документацию по нему.https://projectlombok.org/features/log

Я добавил следующий метод к методу:

log.atInfo().log("This is my info message");

И вывод, который я вижу в консоли:

Mar 21, 2019 7:35:05 PM net.domain.Class myMethod
INFO: This is my info message

Я быпредпочитаю «ГГГГ-ММ-ДД ЧЧ: ММ: СС.ммм» с 24-часовым форматом времени.Есть ли способ настроить это?Мне не нужно использовать аннотацию Lombok, она казалась проще.

Кроме того, я не смог найти тег flogger для этого поста.

1 Ответ

0 голосов
/ 22 марта 2019

По выводу это выглядит так: flogger использует SimpleFormatter из JUL.Формат управляется установкой системного свойства или определением ключа в файле logging.properties .Аргументы форматера описаны в методе SimpleFormatter :: format .Имейте в виду, что аргументы в документации отключены на один, поэтому параметр даты фактически равен %1.

Синтаксис форматирования даты описан в java.util.Formatter .

Вот пример тестовой программы , которую можно использовать для проверки правильности компиляции вашего шаблона при применении во время выполнения.Один шаблон, который должен работать: %1$tF %1$tT.%1$tL %2$s%n%4$s: %5$s%6$s%n.

import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;

public class Main {
    public static void main(String[] args) throws Exception {
        final String format = "%1$tF %1$tT.%1$tL %2$s%n%4$s: %5$s%6$s%n";
        final String key = "java.util.logging.SimpleFormatter.format";
        test(format);
        test(System.getProperty(key, format));
        test(LogManager.getLogManager().getProperty(key));
    }

    private static void test(String format) {
        if (format != null) {
            LogRecord record = new LogRecord(Level.INFO, "");
            System.out.println(String.format(format,
                             new java.util.Date(record.getMillis()),
                             record.getSourceClassName(),
                             record.getLoggerName(),
                             record.getLevel().getLocalizedName(),
                             record.getMessage(),
                             String.valueOf(record.getThrown())));
        } else {
            System.out.println("null format");
        }
    }
}

, который печатает:

2019-03-21 21:51:08.604 null
INFO: null
...