如何使java日志输出显示在一行上?
此时,默认条目如下所示:
Oct 12, 2008 9:45:18 AM myClassInfoHere
INFO: MyLogMessageHere
我如何让它这样做
Oct 12, 2008 9:45:18 AM myClassInfoHere - INFO: MyLogMessageHere
我正在使用java。util。伐木
你可以在下面搜索框中键入要查询的问题!
此时,默认条目如下所示:
Oct 12, 2008 9:45:18 AM myClassInfoHere
INFO: MyLogMessageHere
我如何让它这样做
Oct 12, 2008 9:45:18 AM myClassInfoHere - INFO: MyLogMessageHere
我正在使用java。util。伐木
# 1 楼答案
与Tervor类似,但我喜欢在运行时更改属性
请注意,这需要在创建第一个SimpleFormatter之前进行设置,正如在注释中所写的那样
# 2 楼答案
1)
-Djava.util.logging.SimpleFormatter.format
Java7支持具有
java.util.Formatter
格式字符串语法的属性见here
我最喜欢的是:
这使得输出像:
2) 把它放到IDEs上
IDE通常允许您为项目设置系统属性。 例如,在NetBeans中,不是添加-D..=。。。在某个地方,将属性以
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-...
的形式添加到操作对话框中,不带任何引号。IDE应该能够解决这个问题3) 把它交给Maven-Surefire
为方便起见,以下是如何将其置于Surefire:
4) 手工制作
我有一个带few ^{} related classes 的图书馆。其中
SingleLineFormatter
。 可下载jarhere# 3 楼答案
正如Obediah Stane所说,有必要创建自己的
format
方法。但我会改变一些事情:创建直接从}再也没有什么可添加的了
Formatter
派生的子类,而不是从SimpleFormatter
派生的子类。{创建新的
Date
对象时要小心!您应该确保表示LogRecord
的日期。使用默认构造函数创建新的Date
时,它将表示Formatter
处理LogRecord
的日期和时间,而不是创建LogRecord
的日期下面的类可以是
Handler
中的used as formatter,而这个类又可以是added到Logger
。注意,它忽略了LogRecord
中可用的所有类和方法信息# 4 楼答案
这就是我用的
你会得到像
# 5 楼答案
从Java 7开始,java.util.logging.SimpleFormatter支持从系统属性获取其format,因此向JVM命令行添加类似的内容将使其在一行上打印:
或者,您也可以将其添加到
logger.properties
:# 6 楼答案
根据屏幕截图,在Eclipse中选择“运行方式”,然后选择“运行配置…”并用双引号而不是双引号添加Trevor Robinson的答案。如果您错过了双引号,您将得到“找不到或加载主类”错误