我正在尝试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