java - WebSphere App Server 中的 SLF4J 消息格式

标签 java logging websphere slf4j

所以,我又在用日志记录来撞墙了。我知道,它能有多复杂?好吧,让我们看看...

我正在开始一个在 WebSphere Application Server 6.1 上运行的新项目(实际上是 Portal Server 6.1,但它的底层是 WAS 6.1 - 无论如何)。我通常为我的 WAS 项目使用 java.util.logging,一切都很好。这位客户是 SLF4J 的粉丝,想使用它。很公平,听起来很简单。

因此,我将 slf4j-api-1.5.8.jar 和 slf4j-jdk14-1.5.8.jar 部署到我的 WEB-INF/lib 目录中。在我的代码中,我做了一个 --

// These classes are coming from org.slf4j.*
private static Logger log = LoggerFactory.getLogger(MyClass.class);
...
log.debug("This is a log message");

正如预期的那样,我在 SystemOut.log 中得到了一个条目。但是,这是我无法弄清楚的消息格式。一个例子是——

[12/15/09 15:43:15:071 EST] 00000042 MyClass D com.example.MyClass This is a log message

让我解释一下示例日志条目中的内容。我假设 com.example.MyClass 左侧的所有内容都来自 j.u.l 格式化程序。它右边的所有内容都是我在 log.debug() 中包含的内容。那么,是谁在添加 com.example.MyClass?我唯一能想到的是 SLF4J 在将消息传递给底层 j.u.l 之前添加它。

让我恼火的是 com.example.MyClass 部分。我不希望它包含在 SLF4J 生成的日志消息中。类名已经包括在内,所以不需要多余的内容。另外,真正的包名称很长,它们的包含只会将日志条目的真正内容推到右边太远。

当我只使用普通的 java.util.loggging 时,日志条目完全相同除了不包括“com.example.MyClass”部分。正是我想要的!

因此,问题是 - 我如何才能在 WAS 下通过 SLF4J 生成的日志消息中删除这个额外的类名条目?

谢谢!

最佳答案

您将 slf4j 绑定(bind)到 java.util.logging,这很可能是在 WebSphere 内部配置的,因为它看起来不像标准消息格式。

我不了解 WebSphere,但您可以通过告诉 slf4j 绑定(bind)到其他东西来获得更好的结果。 slf4j-simple 后端可以吗?它只是打印出信息或更高级别的消息,而不是调用 java.util.logging。

关于java - WebSphere App Server 中的 SLF4J 消息格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1910378/

相关文章:

java - Elasticsearch Java API : Object mapping for [eventDefinitions] tried to parse field [null] as object, 但找到了具体值?

java - 使用 Java、Spring、Jsp、Extjs 获取 Wildfly 8.2.0 Final - Undertow "UT010019: Response already commited"错误

java - 使用 Logback 屏蔽密码?

python - 我如何创建一个 powershell 脚本来将数千个日志文件从一个位置移动到另一个位置?

java - 当对同一个 Oracle 数据库进行查询时,JDBC 语句中的 SYSDATE 似乎返回不同的时间

java - 如何获得在 WebSphere 上运行的基本身份验证?

java - 单独线程上的网络相关任务

java - 使用 Java Servlet 访问 post 变量

python - 在 tensorflow 估计器中记录长张量值

java - 在 Websphere 数据源中为 Sybase 数据源设置隔离级别