在logging.properties中自定义日志格式

cmu*_*t78 5 java logging tomcat log4j java.util.logging

我在Tomcat 7中配置日志格式需要一些指导.我在日志记录配置方面比较新,所以请原谅幽默这个问题,如果它看起来有点基础......

使用logging.properties中配置的Tomcat中的标准日志记录显示以下格式的日志:

Jun 6, 2011 9:27:00 AM com.class.Control_WS callWebService 
INFO: Response received from Control_WS:[Y]
Run Code Online (Sandbox Code Playgroud)

我想自定义这些日志以压缩到一行,并将日期格式扩展到包括毫秒.

例:

[2011-05-04T11:37:00.037|INFO|javax.enterprise.system.stream.out|Response recieved from Control_WS:[Y]]
Run Code Online (Sandbox Code Playgroud)

这是我可以使用JUL做的事情还是我需要切换到LOG4J?

任何可以提供的简单示例或方向都将非常受欢迎.

pet*_*erh 9

如果您使用的是Java 7(或更高版本:-)),则不再需要为java.util.logging(JUL)创建自定义格式化程序类.在Java 7中有一个新属性java.util.logging.SimpleFormatter.format,它控制JUL如何SimpleFormatter打印信息.因此,只要您使用的是SimpleFormatter(无论如何都是默认设置),那么这将起作用.

一些陷阱:

  • 一定要实际使用Java 7. :-)
  • 请务必使用有效的格式字符串.如果您提供的格式无效,JUL将静默恢复为默认格式(标准丑陋的双线).


Luc*_*cas 3

看起来您可以通过创建一个扩展Formatter的自定义类来完成此操作,然后在您的logging.properties中将其指定为处理程序的格式化程序。例如,如果您使用 ConsoleHandler,将使用以下内容:

java.util.logging.ConsoleHandler.formatter = com.mycompany.MyFormatter
Run Code Online (Sandbox Code Playgroud)

然后将类文件(单独或放在 jar 中)放置在 tomcat 类路径中的某个位置。我会创建一个罐子,然后将其放入其中${catalina.home}/lib/ext