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). Я изменил свое приложение, чтобы иметь одну банку на приложение, пока проблем нет.

Другие вопросы по тегам