Log4j:仅记录消息字符串,不记录 className 和其他详细信息

Posted

技术标签:

【中文标题】Log4j:仅记录消息字符串,不记录 className 和其他详细信息【英文标题】:Log4j: Log only message string without logging className and other details 【发布时间】:2018-12-12 07:44:00 【问题描述】:

我有一个 java 应用程序,我正在使用 log4j2。 我只想记录日志消息而不记录类名、日志级别、时间戳等内容。 我确实看到了一些关于自定义附加程序等的建议。但是是否有更简单的方法可以通过修改默认配置来实现这一点?

例子:

log.info(" Hi This is a log message");

所需的日志语句

Hi This is a log message

【问题讨论】:

显示你的日志信息,让我知道你想要的模式 感谢您的回复。用一个例子编辑 【参考方案1】:

你必须更改配置文件log4j.xml

该文件中需要更改的元素是pattern : 如果您使用的是log4j.properties,请更改相应的元素。 模式元素示例:

<PatternLayout pattern="%d [%p] %c %m%n"/>

这里 d id 代表日期p 代表优先级c 代表班级名称 m 来自消息n 来自分隔符 如果您不想要任何东西,请从 pattern 条目中删除。 根据您的要求修改

<PatternLayout pattern=" %m%n"/>

【讨论】:

谢谢。目前项目中没有 log4j.xml 文件。我应该创建一个只有这一行的 - 是的,将其添加到 src 文件夹中并仅保留 **&lt;PatternLayout pattern="%m%n"/&gt;**,在此之前检查文件 log4j.properties 是否存在 谢谢。我怎样才能只为给定的班级做到这一点?而不是整个项目 是的,但是您需要在配置中再添加 1 个附加程序并指定包,例如 log4j.logger.foo.bar.pacakge.Class=DEBUG, myappender log4j.additivity.foo.pacakge.Class=false 抱歉没有收到最后一条评论

以上是关于Log4j:仅记录消息字符串,不记录 className 和其他详细信息的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSON 格式的 log4j 记录 json 字符串消息,而不用引号破坏格式

MDC仅用于记录吗?

如何记录 Shiro 输出?

log4j从类中隔离某个级别

记录层次结构并将 Spark log4j 记录器附加到它

如何使用从 dll 在 Java 端声明的 log4j 记录器