【问题标题】:How do I suppress the date line from 2-line java.util.logging output? [duplicate]如何从 2 行 java.util.logging 输出中抑制日期行? [复制]
【发布时间】:2011-10-27 02:40:16
【问题描述】:

我正在使用 Java 默认记录器,现在它在输出中打印了很多无用的垃圾,这是一个示例,这行代码:

log.info("Logging pointless information...")

将输出所有这些:

Oct 26, 2011 9:37:57 PM java.util.logging.LogManager$RootLogger log
INFO: Logging pointless information...

除了第二行,我什么都不需要知道。我怎样才能删除这个垃圾?我想要的只是简单的文本记录。

【问题讨论】:

  • FWIW,“无用信息”在任何规模或持续时间的程序中都非常有用。
  • @DaveNewton - 就个人而言,我喜欢简洁地记录到控制台并详细地记录到文件(使用 XML 格式化程序)。所以我认为这两种形式都有很大的优点

标签: java logging java.util.logging


【解决方案1】:

也许这是后来添加的,但至少在 Java 7 中,java.util.logging.SimpleFormatter 支持从系统属性获取其格式。这个 JVM 参数将只打印第二行:

-Djava.util.logging.SimpleFormatter.format='%4$s: %5$s%6$s%n'

就个人而言,我喜欢保留所有日期/来源信息,但去掉换行符(并使用更紧凑的国际日期格式):

-Djava.util.logging.SimpleFormatter.format='%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %2$s %5$s%6$s%n'

【讨论】:

  • 你真的不知道你让我的生活变得多么美好。由于不熟悉java,这为我节省了至少5个小时的工作时间。
  • 由于您今天在这里的回答,成千上万的小宝宝和小猫以及小猫小猫被拯救了。感激不尽。
【解决方案2】:

您需要create a a different Formatter 并改用它。

public class BriefFormatter extends Formatter 
{   
    public BriefFormatter() { super(); }

    @Override 
    public String format(final LogRecord record) 
    {
        return record.getMessage();
    }   
}

【讨论】:

  • 此方法记录整个原始记录,包括 XML。实际上比 SimpleFormatter 详细得多。
【解决方案3】:

这些都在问几乎相同的问题:

以下是如何实施 Jarrod Roberson 建议的示例:http://www.javalobby.org/java/forums/t18515.html

通常,要应用格式化程序,您需要创建一个文件,通常称为 logging.properties。在里面写这样一行:

java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

或任何你的格式化程序类。然后像这样添加一个 JVM 参数:

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

或者使用更强大的日志记录系统,例如 Logback 或 Log4j,它们具有预构建的格式化程序,可以为您节省一些编码。

【讨论】:

    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多