logging.properties中的多种格式

nil*_*ils 5 java logging java.util.logging

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

handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
Run Code Online (Sandbox Code Playgroud)

两者都使用SimpleFormatter

java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
Run Code Online (Sandbox Code Playgroud)

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

java.util.logging.FileHandler.formatter.format = ...
Run Code Online (Sandbox Code Playgroud)

并使用

java.util.logging.SimpleFormatter.format
Run Code Online (Sandbox Code Playgroud)

下面的相应格式化程序也不起作用。有任何想法吗?我不想像变通办法那样实现自己的格式化程序...

jme*_*ens 3

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
Run Code Online (Sandbox Code Playgroud)