我们的weblogic 8.1服务器中有大约19个应用程序。每个应用程序都是一个带有几个ejbs,mdb等的.Ear应用程序。每个应用程序都有一个log4j属性,在文件系统的某个地方的.properties文件中定义。
我们在所有应用程序的服务器日志中不断收到此错误(如下所示)。此异常未在应用程序中捕获,应用程序的流程不会停止,但是当发生此异常时,我们会错过一两个日志语句。
log4j:ERROR Attempted to append to closed appender named
注意:我在网上查了一下,我在系统的任何地方都没有看到重复的log4j.jar文件。如果需要,我可以发布.properties文件。
编辑:包括几个log4j属性。这些属性文件对于所有其他应用程序也是相同的。
第一个LOG文件。
# Define the root logger with appender file
log=.//SI_AppLogs
log4j.rootLogger=WARN, SomeApp
log4j.logger.SomeAppLoggers = INFO, SomeApp
# Define the file appender
log4j.appender.SomeApp=org.apache.log4j.DailyRollingFileAppender
log4j.appender.SomeApp.File=${log}/CPEPortBasedAuthorization.log
log4j.appender.SomeApp.DatePattern='.'yyyy-MM-dd
log4j.appender.SomeApp.Append=true
# Define the layout for file appender
log4j.appender.SomeApp.layout=org.apache.log4j.PatternLayout
log4j.appender.SomeApp.layout.conversionPattern=%d %-5r %-5p [%c] (%t:%x) %m%n
log4j.additivity.org.apache=false
log4j.additivity.SomeAppLoggers = false
第二个日志文件
# Define the root logger with appender file
log=.//SI_AppLogs
log4j.rootLogger=WARN, AnotherApp
log4j.logger.AnotherAppLoggers = INFO, AnotherApp
# Define the file appender
log4j.appender.AnotherApp=org.apache.log4j.DailyRollingFileAppender
log4j.appender.AnotherApp.File=${log}/CPEPortBasedAuthorization.log
log4j.appender.AnotherApp.DatePattern='.'yyyy-MM-dd
log4j.appender.AnotherApp.Append=true
# Define the layout for file appender
log4j.appender.AnotherApp.layout=org.apache.log4j.PatternLayout
log4j.appender.AnotherApp.layout.conversionPattern=%d %-5r %-5p [%c] (%t:%x) %m%n
log4j.additivity.org.apache=false
log4j.additivity.AnotherAppLoggers = false
更新:
我在类路径中没有看到重复的log4j.jars。我运行了以下代码并进行了验证。
String classpath = System.getProperty("java.class.path");
我没见过任何两个log4j.properties文件都定义了相同的Appender。通过搜索整个weblogic部署目录来验证它。
答案 0 :(得分:1)
这对我来说很难找,因为我在VM中有多个应用程序。根据{{3}} log4j,jar文件需要单独添加到每个应用程序。 log4j中的大多数类都是单例,因此根记录器将作为所有应用程序的单例创建。(EAR应用程序)。我已经修改了我的应用程序,每个应用程序都有一个jar,到目前为止没有任何问题。