Fru*_*ner 7 java websphere log4j rad websphere-7
我刚刚在工作中选择了一个应用Log4J来记录其活动的现有Web应用程序.我完全按照我的要求配置了我的工作区,其他所有内容(数据库连接,身份验证等等)工作正常,只是没有任何内容写入日志文件.其他类似的应用程序没有问题日志.
我在应用程序启动时查看了WebSphere控制台,并且没有任何错误可能表明Log4J没有记录的原因.
我向另一个开发人员(他曾经在这个应用程序上工作,但暂时没有比我更早过时)提到这一点,他们说这是非常奇怪的行为,但不知道为什么它可能无法登录并且不报告任何错误.
我已经查看了配置文件和属性文件,一切看起来都还可以.我怀疑Log4J甚至从未读过log4j.xml,但我不确定.自从我使用Log4J已经有一段时间了 - 有没有人有一些关于解决这类问题的好方法?
PS:这个应用程序的实例部署到各种测试/ QA/prod服务器,这些实例都记录正常.这是只有在本地工作站记录似乎静默失败.
更新:因此,它似乎与部署应用程序的方式有关.我将类加载器模式更改为"Parent Last",我可以看到Log4J文件至少现在已被读取.我尝试的第一个动作触发了一个无法找到的ClassNotFoundException谚语org.apache.commons.logging.impl.Log4jFactory.
第二次更新:
我注意到一些奇怪的东西......应用程序有两个WAR项目 - 其中一个用于UI,另一个用于某些Web服务.这是该UI的项目是成功登录其操作的日志文件.Web服务项目是失败的ClassNotFoundException.它们都将commons-logging.jar列为JavaEE模块依赖项,并且它们都没有项目特定的日志记录配置(所有配置文件都在Resources项目中).
一个主要的区别是UI项目包括一些其他内部框架(预编译为JAR),这些框架可能已经包含必要的日志记录配置,也许这就是差异所在.
我也尝试使用这个答案(META-INF/services中名为org.apache.commons.logging.LogFactory的文件,其中一行包含:"org.apache.commons.logging.impl.Log4jFactory")来自这个问题:Websphere所有日志都将转到SystemOut.log但它似乎没有帮助.
我最近所做的最终使日志记录正常工作的更改是将类加载器模式更改为“PARENT_FIRST”,并将 WAR 类加载器策略更改为“Application”。初始默认配置是“PARENT_FIRST”/“Module”。根据一位同事的建议,我将其更改为“PARENT_LAST”/“应用程序”,他说日志记录对他们来说效果很好,这是他们为此应用程序创建新沙箱时必须做出的唯一更改。我不确定为什么我必须选择“PARENT_FIRST”/“Application”,但至少它现在可以工作。
更新:
我尝试设置一个新的工作区,但遇到了同样的问题。事实证明,您需要“PARENT_FIRST”/“Application”以及 META-INF/services 中名为 org.apache.commons.logging.LogFactory 的文件,其中一行包含:“org.apache.commons.logging.impl.Log4jFactory” 。没有该文件会导致日志记录失败(通常会显示一条消息,指出找不到 Log4J)。
| 归档时间: |
|
| 查看次数: |
27485 次 |
| 最近记录: |