log4j:ERROR尝试追加已命名的已关闭的appender

时间:2014-06-05 17:16:45

标签: java logging log4j weblogic

我们的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部署目录来验证它。

1 个答案:

答案 0 :(得分:1)

这对我来说很难找,因为我在VM中有多个应用程序。根据{{​​3}} log4j,jar文件需要单独添加到每个应用程序。 log4j中的大多数类都是单例,因此根记录器将作为所有应用程序的单例创建。(EAR应用程序)。我已经修改了我的应用程序,每个应用程序都有一个jar,到目前为止没有任何问题。