0

我在我的程序中添加了一个记录器,在网上冲浪我在我的代码中添加了一个非常简单的记录器,它具有基本的 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 extends SimpleFormatter{

但“格式”变量不可编辑。我也尝试过扩展 Formatter(SimpleFormatter 的超类)但没有成功。

我唯一能做的就是扩展 SimpleFormatter 并手动覆盖它: public String format(LogRecord rec); 带有无聊和复杂的代码。

我只是想知道是否有任何方法可以简单地使用 SimpleFormatter 类的内部正则表达式阅读器

编辑:错误

4

2 回答 2

1

你看过JavaDoc吗?它概述了 SimpleFormatter。

此外,format 是 SimpleFormatter 中的公共方法。

进一步的线

java.util.logging.SimpleFormatter.format="%4$s: %5$s [%1$tc]%n"

应该在属性文件而不是 Java 类中定义。

老实说,我不使用 java.util.logging 我使用的是 Fildor 提到的 log4j。我觉得简单多了。首先你需要一个配置文件,比如下面的 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");
于 2012-10-05T11:47:01.780 回答
0

LINK是关于如何配置 Java 标准日志记录(德语)的。我现在正试图找到一个类似的英文...

同时:我没有使用 util.logging 但对于我在上面的链接中读到的内容,我想你必须实现自己的格式化程序。

给你英文。

顺便说一句:我推荐 log4j 或 slf4j/logback。

于 2012-10-05T11:43:17.910 回答