【问题标题】:Multiple formats in logging.propertieslogging.properties 中的多种格式
【发布时间】:2014-05-07 08:55:34
【问题描述】:

我的 logging.properties 中有两个处理程序:

handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler

两者都使用SimpleFormatter

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

但现在我想要这些处理程序有两种不同的格式。控制台处理程序应该只打印一条短消息。另一方面,文件处理程序应该打印更详细的消息。 但是如何为两种格式化程序使用不同的格式呢?以下方法无效:

java.util.logging.FileHandler.formatter.format = ...

并使用

java.util.logging.SimpleFormatter.format

下面的相应格式化程序也不起作用。有任何想法吗?我不想实现自己的格式化程序只是一种解决方法......

【问题讨论】:

  • 实现自己的格式化程序不是一种解决方法。这是实现您想要的格式的正确方法。
  • 是的,但我可以使用 SimpleFormatter 指定我想要的格式。那么我为什么要开发一个自己的格式化程序,它基本上做同样的事情只是为了能够正确配置记录器呢?对我来说,这听起来像是一种解决方法。
  • 如果为 SimpleFormatter 指定格式,SimpleFormatter 的所有实例都将采用该格式。那不是你想要的,对吧?您希望每个处理程序有一个不同的处理程序。因此,您可以按照您需要的格式实现一个格式化程序。
  • 基本上我想要相同(但不相同)的格式化程序 - 具有不同的配置。所以我想这是不可能的?
  • 不,不可能。

标签: java logging java.util.logging


【解决方案1】:

java.util.logging.SimpleFormatter 仅支持一种 JVM 宽格式。如果您的项目包含 JavaMail 1.5.2 或更高版本,您可以在 ConsoleHandler 上使用 CompactFormatter,在 FileHandler 上使用 SimpleFormatter。

##logging.properties#
handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.formatter=com.sun.mail.util.logging.CompactFormatter
com.sun.mail.util.logging.CompactFormatter.format=%4$s: %5$s [%1$tc]%n
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%1$tc %2$s%n%4$s: %5$s%6$s%n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2016-01-26
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-04
    相关资源
    最近更新 更多