igo*_*gor 5 java ear log4j weblogic
我正在开发部署在WebLogic 10.3上的应用程序.它被打包为EAR并包含一个模块.该应用程序本身工作正常但我面临与日志记录相关的问题.
我正在使用Log4j.该库包含在EAR文件中,log4j.xml位于JAR模块下.所以配置位置如下:
A.ear/B.jar/log4j.xml
Log4j配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CA" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MMM-yyyy-HH:mm:ss} %p %C{1} - %m%n" />
</layout>
</appender>
<appender name="DRFA" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file"
value="servers/AdminServer/logs/EJB.log" />
<param name="Append" value="true" />
<param name="DatePattern" value="'-'yyyy-MM-dd" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd-MMM-yyyy-HH:mm:ss} %p %C{1} - %m%n" />
</layout>
</appender>
<logger name="com.companyname.ejb" additivity="false">
<level value="DEBUG" />
<appender-ref ref="DRFA" />
<appender-ref ref="CA" />
</logger>
<logger name="com.companyname.results" additivity="false">
<level value="DEBUG" />
<appender-ref ref="DRFA" />
<appender-ref ref="CA" />
</logger>
<logger name="com.companyname.marketdata" additivity="false">
<level value="DEBUG" />
<appender-ref ref="DRFA" />
<appender-ref ref="CA" />
</logger>
<root>
<level value="DEBUG" />
<appender-ref ref="CA" />
</root>
Run Code Online (Sandbox Code Playgroud)
当我构建和部署EAR(使用Maven和自定义WebLogic插件)并调用应用程序时,不会显示日志文件.但是,如果我重新启动WebLogic,一切都很好.
WebLogic在域模式下使用单节点在Windows 7下运行.
我想知道是否有一些方法可以在没有重新启动weblogic的情况下显示日志(因为它可能会导致生产环境出现问题)?
更新:此外,我想知道这种行为的原因是什么(即为什么在应用程序部署后不立即创建日志文件)?这是Weblogic,log4j或它们的耦合问题吗?我试图在Oracle文档中找到答案,但现在没有运气.
我没有找到任何快速配置解决方案,因此需要更改代码。
我已按照此处的建议添加了 Weblogic 应用程序生命周期侦听器。它的 postStart() 方法通过 DOMConfigurator 显式初始化 log4j,现在日志在应用程序部署后立即显示。
初始化配置的方法很少。其中之一在eis 的帖子中提到,另一个在这里提到。但我选择侦听器是为了在 EAR 中保留单个模块,并避免集群环境中的单例 EJB 出现问题(即我不确定 Weblogic 是否会在每个节点上创建单例或每个集群仅创建一个实例)。
另外,为了防止本地和开发环境发生环境更改,我在那里使用内部 log4j.xml (即放置在 Ear 文件中)。
对于阶段和产品 - 指定外部配置文件(在 Maven 配置文件中)。
外部文件由 log4j 监控,因此更改将自动应用,无需任何重新部署或重新启动。
| 归档时间: |
|
| 查看次数: |
6482 次 |
| 最近记录: |