gpt4 book ai didi

java - 动态 Web 项目 - 具有多个 log4j.jar,一个在应用程序中,一个在 api 中

转载 作者:行者123 更新时间:2023-12-01 14:30:51 25 4
gpt4 key购买 nike

我们有一个动态 Web 项目,它使用 log4j.jar(有自己的 log4j.xml)来创建自定义应用程序日志,并且它还使用有自己的 log4j.jar(有自己的 log4j.xml)的 api。动态 Web 项目托管在 websphere 上,并且 api 配置为共享库。

当从模块调用 api 方法时。 SystemErr.log 文件中打印以下错误。

Parent: com.ibm.ws.classloader.ProtectionClassLoader@61ea61ea
Delegation Mode: PARENT_LAST] whereas object of type
[5/30/13 8:05:29:421 EDT] 00000039 SystemErr R log4j:ERROR "org.apache.log4j.DailyRollingFileAppender" was loaded by [
com.ibm.ws.classloader.CompoundClassLoader@d4c0d4c[war:ModuleName of the Web Project]
Local ClassPath:class path is printed



[5/30/13 5:32:55:632 UTC] 0000003e SystemErr R log4j:ERROR Could not instantiate appender named LOGGER_NAME.
[5/30/13 5:32:55:632 UTC] 0000003e SystemErr R log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
[5/30/13 5:32:55:632 UTC] 0000003e SystemErr R log4j:ERROR The class "org.apache.log4j.Appender" was loaded by
[5/30/13 5:32:55:633 UTC] 0000003e SystemErr R log4j:ERROR [
com.ibm.ws.classloader.ExtJarClassLoader@18d418d4[server:0]
Local ClassPath: class path is printed

log4j 无法从 api 中删除,因为它需要在服务器启动时初始化 api。当从模块调用 api 时,会打印上述错误。

Dynamic web projects log4j.properties

log4j.rootLogger=DEBUG, APP_LOGGER_NAME1

log4j.appender.APP_LOGGER_NAME1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APP_LOGGER_NAME1.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_LOGGER_NAME1.layout.ConversionPattern=[%20.20d{dd/MMM/yyyy-HH:mm:ss}] %6.6p - %-35.35c{2} :: %m%n
log4j.appender.APP_LOGGER_NAME1.File=path of log file
log4j.appender.APP_LOGGER_NAME1.DatePattern='.'yyyy-MM-dd


API log4j.properties

log4j.rootLogger=DEBUG, APP_LOGGER_NAME2
log4j.appender.APP_LOGGER_NAME2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APP_LOGGER_NAME2.layout=org.apache.log4j.PatternLayout
log4j.appender.APP_LOGGER_NAME2.layout.ConversionPattern=[%20.20d{dd/MMM/yyyy-HH:mm:ss}] %6.6p - %-35.35c{2} :: %m%n
log4j.appender.APP_LOGGER_NAME2.File=path of log file
log4j.appender.APP_LOGGER_NAME2.DatePattern='.'yyyy-MM-dd

请注意,我们有一个 AIX 机器,其中托管应用程序服务器,并且日志文件名和文件权限正确。由于商业行为准则,我没有将它们粘贴到问题描述中。

最佳答案

在 log4j2 中,可以在 Web 应用程序和容器类路径中拥有单独的日志配置。请参阅:http://logging.apache.org/log4j/2.x/manual/logsep.html

log4j-1.x 文档在这个主题上有点薄弱。如果迁移到 log4j2 不适合您,我建议您在 log4j 用户邮件列表上提出问题;那是专家们常去的地方。

仅供引用,我认为这可能是您所看到问题的原因: http://logback.qos.ch/manual/loggingSeparation.html#tamingStaticRefs

关于java - 动态 Web 项目 - 具有多个 log4j.jar,一个在应用程序中,一个在 api 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16864875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com