如何从日志行中删除包名称?

问题描述 投票:0回答:1

Java util 日志记录使用以下输出行格式:

java.util.logging.SimpleFormatter.format = %4$s %2$s %n

这给出了以下输出,其中第一个 main

package
名称,而最后一个 main
method
名称:

INFO main.MySuperPuperClassName main

如何去掉这里的包名?这样生成的日志行将如下所示:

INFO MySuperPuperClassName main

这个想法是不在日志行中输出包名称。

java java.util.logging
1个回答
0
投票

您可以在此处找到正确创建日志字符串所需的所有文档:https://docs.oracle.com/javase/7/docs/api/java/util/logging/SimpleFormatter.html#format(java.util.日志记录.LogRecord)

在这里您可以获得有关logging.properties文件的详细信息: https://docs.geotools.org/latest/userguide/library/metadata/logging/java_logging.html

从您呈现的输出来看,您的日志配置可能会被忽略,这就是您看不到结果的原因。您在运行代码之前设置了属性配置吗? https://stackoverflow.com/a/54068185/420096

例如,这个java文件和这个配置在同一个文件夹中:

import java.util.logging.Logger;

public class FooBar {

  private static final Logger LOG = Logger.getLogger("my");

  public static void main(String ...args) {
    LOG.info("I was there");
  }
}

文件logging.properties:

handlers= java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s: %3$s %2$s %5$s %n

您可以使用此命令行测试日志记录:

java -Djava.util.logging.config.file=logging.properties FooBar.java

并期望这样的输出:

2024-01-07 08:35:07 INFORMAÇÕES: my FooBar main I was there

输出中的“my”是您用作记录器名称的任何内容。类简单名称,例如:

https://docs.oracle.com/javase/9/docs/api/java/lang/Class.html#getSimpleName

© www.soinside.com 2019 - 2024. All rights reserved.