У нас около 19 приложений на нашем сервере weblogic 8.1. Каждое приложение представляет собой приложение.Ear с несколькими ejbs, mdb и т.д. Каждое приложение имеет свойства log4j, определенные в файле.properties где-то в файловой системе.
Мы продолжаем получать эту ошибку (ниже) в журналах сервера для всех приложений. Это исключение не попадает в приложение, поток приложения не останавливается, но мы пропускаем оператор журнала или два, когда возникает это исключение.
log4j:ERROR Attempted to append to closed appender named
Примечание. Я искал в Интернете, я не видел дубликатов файлов log4j.jar в любой точке системы. Я могу опубликовать файлы.properties, если вам нужно.
EDIT: Включает пару свойств log4j. Эти файлы свойств одинаковы для всех других приложений.
1-й файл журнала.
# 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.
Это была трудная находка для меня, поскольку у меня есть несколько приложений на виртуальной машине. В соответствии со статьей jar файл log4j необходимо добавлять в каждое приложение отдельно. Большинство классов в log4j являются singleton, поэтому корневой регистратор создается как одноэлемент для всех приложений (приложения EAR). Я изменил мое приложение, чтобы иметь одну банку на приложение, до сих пор никаких проблем.