2

所以,我再次用伐木头撞墙。我知道,它有多复杂?好吧,走着瞧...

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

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

// 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左侧的所有内容都来自 jul 格式化程序。它右边的所有内容都是我在 log.debug() 中包含的内容。那么,谁在添加com.example.MyClass?我唯一能想到的是 SLF4J 在将消息传递到底层 jul 之前添加它

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

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

所以,问题是 - 我怎样才能摆脱 WAS 下通过 SLF4J 生成的日志消息中的这个额外的类名条目?

谢谢!

4

2 回答 2

1

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

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

于 2009-12-15T21:55:49.563 回答
0

基本上,您想要配置由底层日志机制生成的日志消息的布局。

SLF4J 实际上并不执行日志记录,而是根据您的设置委托给其他日志记录系统(log4j、JUL 等)。

因此,如果您将 SLF4J 与 JUL 绑定,那么我认为您要问的真正问题是

于 2009-12-15T21:44:37.900 回答