我正在尝试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小时制的“ YYYY-MM-DD HH:MM:SS.mmm”。有办法配置吗?我不必使用Lombok批注,它似乎更简单。

另外,我也找不到该帖子的flogger标签。

最佳答案

从输出看来,flogger正在使用JUL中的SimpleFormatter。通过设置system property or define the key in the logging.properties控制格式。格式化程序参数在SimpleFormatter::format方法中描述。请记住,文档中的参数相距一个,因此date参数实际上是%1

日期格式的语法在java.util.Formatter中描述。

这是sample test program,可用于确保模式在运行时应用时正确编译。一种有效的模式是:%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

10-06 14:02