当前位置: 首页 > 知识库问答 >
问题:

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

孟彦
2023-03-14

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

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。登录中。简单格式化程序。格式属性。

还有几个例子:

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]

我试了每一个,但“格式”字段是“不可见”(我想是私有的),所以我不能直接编辑它。没有任何方法类似于html" target="_blank">setStringVar(String regex);从外部设置变量。

我试图扩展类公共类MyClass扩展简单格式{

但是“格式”变量不可编辑。我也尝试过扩展For事(SimpleFor事的超级类),但没有成功。

我唯一能做的就是扩展SimpleFor事,并手动覆盖它的:公共字符串格式(日志记录rec);枯燥而复杂的代码。

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

编辑:错误

共有2个答案

吴开宇
2023-03-14

这个链接是关于如何配置Java标准日志(德语)。我现在正在寻找一个类似的英语。。。

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

给你英语。

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

殷耀
2023-03-14

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

此外,format是SimpleFormat中的公共方法

再往前走

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

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

老实说,我不使用java。util。日志我使用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");
 类似资料:
  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 主要内容:正则表达式元字符,贪婪模式非贪婪模式,正则表达式转义正则表达式(regular expression)是一种字符串匹配模式或者规则,它可以用来检索、替换那些符合特定规则的文本。正则表达式几乎适用于所有编程语言,无论是前端语言 JavaScript,还是诸如许多后端语言,比如 Python、Java、C# 等,这些语言都提供了相应的函数、模块来支持正则表达式,比如 Python 的 re 模块就提供了正则表达式的常用方法。 在使用 Python 编写

  • 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理,可以快速、准确地完成复杂的字符串查找、替换等处理要求。 常用的正则表达式元字符: 元字符|功能说明 :-:|- .|除换行符外的任意单个字符 *|0个或任意多个字符 +|1个或任意多个字符 -|用在 [ ] 中表示范围 ||两者中一个 ^|行首 $|行尾 ?|0个或1个字符 \

  • 问题内容: 这个问题已经在这里有了答案 : 字符串替换方法不替换字符 (5个答案) 2年前关闭。 我正在尝试将所有特殊字符替换为“%”,例如: 我的正则表达式是: 在在线工具中*它可以正常运行,但在Java中 弦保持不变。 *我尝试过:http : //www.regexplanet.com/ http://regex101.com/和其他 问题答案: 字符串是不可变的。您忘了将新变量重新分配给:

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 我试过这个表达- 此正则表达式将强制执行以下规则: 至少一个大写英文字母, 至少一个小写英文字母, 至少一个数字, 至少一个特殊字符, (带锚点) 正则表达式将如何满足以下要求。 13个字符或更长的密码只需要小写字母 密码必须至少包含8个字符 8到13个字符之间的密码需要以下4类字符中的至少3个: 大写字母 小写字母 数字 符号