JAVA SimpleFormatter,无法设置正则表达式

标签 java regex logging formatting string-formatting

我正在向我的程序添加一个记录器,在网上冲浪时,我向我的代码添加一个非常简单的记录器,具有基本的两行定义:

private static final Logger LOG = Logger.getLogger(GUI.class.getName());

public MyClass(){

    //other stuff...
    LOG.info("text to log");
    //other stuff...
}

经过几个小时的开发后,我想知道如何格式化记录文本的样式,所以我来到了这个类(class):

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]

我尝试了其中的每一个,但“格式”字段“不可见”(我想是私有(private)的),所以我无法直接编辑它。没有类似的方法 setStringVar(字符串正则表达式); 从外部设置 var。

我尝试延长类(class) 公共(public)类 MyClass 扩展 SimpleFormatter{

但是“format”var不可编辑。我还尝试扩展 Formatter(SimpleFormatter 的父类(super class)),但没有成功。

我唯一能做的就是扩展 SimpleFormatter 并手动覆盖它: 公共(public)字符串格式(LogRecord rec); 代码枯燥且复杂。

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

编辑:错误

最佳答案

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

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

进一步行

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了解详情。然后在你的类中定义以下私有(private)静态成员

static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(Testing.class);

当您想要输出日志记录时,只需执行以下操作:

LOG.error("Test Error");

关于JAVA SimpleFormatter,无法设置正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12745392/

相关文章:

java - 我想制作一个 Regex 来检查每一行,如果出现 <b>12^ 那么我想使该行加粗并将字体大小设置为 12 如何实现这一点?

java - 为写入 Java 标准输出的所有消息添加前缀

tomcat - 重新配置/配置 Tomcat 日志记录?

java - Docker(Spring Boot 或 Thorntail)和 Keycloak

Java - 为不同的任务创建线程

java - 如何更改曾经播放的音频文件的名称?

MySQL SELECT LIKE 或 REGEXP 匹配一条记录中的多个单词

regex - 为什么我的 Perl 正则表达式会导致无限循环?

logging - Yii2 日志控制台命令输出

java - 为什么反向 DNS 表示法用于包命名?