所以,我再次用伐木头撞墙。我知道,它有多复杂?好吧,走着瞧...
我正在开始一个要在 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 生成的日志消息中的这个额外的类名条目?
谢谢!