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