我正在为我的程序添加一个记录器,在网上冲浪我在我的代码中添加了一个基本的2行定义的简单记录器:
private static final Logger LOG = Logger.getLogger(GUI.class.getName());
public MyClass(){
//other stuff...
LOG.info("text to log");
//other stuff...
}
经过几个小时的开发,我想知道如何格式化记录文本的样式,我来到这堂课:
java.util.logging.SimpleFormatter
阅读Javadoc我可以找到:
可以通过在java.util.logging.SimpleFormatter.format属性中指定格式字符串来自定义格式。
也有一些例子:
Some example formats:
java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"
This prints 1 line with the log level (4$), the log message (5$) and the timestamp (1$) in a square bracket.
WARNING: warning message [Tue Mar 22 13:11:31 PDT 2011]
我尝试了其中的每一个,但“格式”字段是“不可见的”(私人我猜)所以我无法直接编辑它。没有任何类似的方法 setStringVar(String regex); 从外部设置var。
我试图扩展课程 public class MyClass扩展了SimpleFormatter {
但“格式”var不可编辑。我也尝试过扩展Formatter(SimpleFormatter的超类)而没有成功。
我唯一能做的就是扩展SimpleFormatter并手动覆盖它: public String格式(LogRecord rec); 无聊而复杂的代码。
我只是想知道是否有任何方法可以简单地使用SimpleFormatter类的内部正则表达式读取器
编辑:错误
答案 0 :(得分:1)
你看过JavaDoc了吗?它概述了SimpleFormatter。
另外,format是SimpleFormatter中的公共方法。
进一步的行
java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"
应该在属性文件中定义,而不是在Java类中定义。
老实说,我不使用java.util.logging我使用log4j作为Fildor提到的。我发现它更简单。首先,您需要一个配置文件,如下面的log4j.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %5p %c{1}:%L - %m%n"/>
</layout>
</appender>
<root>
<priority value="debug"></priority>
<appender-ref ref="stdout"/>
</root>
</log4j:configuration>
您可以自由调整转换模式,有关详细信息,请参阅PatternLayout。然后在您的类中定义以下私有静态成员
static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(Testing.class);
只需要输出日志记录即可:
LOG.error("Test Error");
答案 1 :(得分:0)