所以我们今天遇到了一个有趣的问题。我们有一个使用一堆 3rd 方 jar 的 Java EE Web 应用程序。这包括休眠。
我们使用 SDK 附带的 Java logging api 进行日志记录。通常,我们在日志记录方面非常薄弱,但我们使用 log4j 创建它自己的日志文件的第 3 方 jar 之一遇到了这个问题。它不仅从自己的代码中记录语句,甚至开始为休眠代码编写调试,从而导致批处理作业立即记录 3 GB 的日志。
我有两个问题:
- 我需要解决这个日志记录问题(如果可能的话,我不希望拉出或修改 3rd 方 jar 中的 log4j 配置)。除了修改或拉出第 3 方 jar 中的 log4j 配置,或者通过我自己的 log4j 配置覆盖第 3 方 jar 中的配置之外,是否还有一种好方法可以做到这一点?我不喜欢这两个选项中的任何一个,但我想做最好的。
- 我想问一下,期望第 3 方图书馆愉快地注销是否符合规定?我认为这是一个糟糕的设计。我想了解社区对此的看法。
我想要第 3 方库记录错误。话虽如此,我认为这个第 3 方 jar 从它负责的包以外的包中记录 DEBUG 有点尴尬。例如,在我的情况下,这个第 3 方 jar 正在记录 Hibernate 调试,即使它甚至没有调用任何休眠方法。我们运行的批处理作业甚至没有调用这个 jar 中的 API。看起来让我自己的 log4j 配置覆盖其中的内容似乎是最好的方法。