2015-05-07 2 views
0

У меня есть несколько веб-приложений (несколько войн) в одном экземпляре wildfly. Каждое веб-приложение, прочитать его log4j.properties файл с именем webapp1.log4j.properties хранится в WILDFLY_HOME/автономный/конфигурации каталог при запуске с сервлета вызывается:Log4j внешняя загрузка файла - множественная война

<servlet> 
    <servlet-name>LoadPropertiesServlet</servlet-name> 
    <display-name>LoadPropertiesServlet</display-name> 
    <servlet-class>it.h2h.smart.identity.servlet.LoadPropertiesServlet</servlet-class> 
    <load-on-startup>0</load-on-startup> 
</servlet> 

Вот LoadPropertiesServlet класс:

public void init() throws ServletException { 
    log.debug("init()"); 
    loadConfiguration(); 
} 

private void loadConfiguration() { 
... 
    log.debug("Loading log4j file " + wildfly_config_path + "/" + webapp_name + ".log4j.properties"); 
    PropertyConfigurator.configure(wildfly_config_path + "/" + webapp_name + ".log4j.properties"); 
... 
} 

И это мой webapp1.log4j.properties:

log4j.logger.it=DEBUG,WEBAPP 
log4j.appender.WEBAPP=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.WEBAPP.DatePattern='.'yyyy-MM-dd 
log4j.appender.WEBAPP.File=/Users/gianca/WEBAPP.log 
log4j.appender.WEBAPP.layout=org.apache.log4j.PatternLayout 
log4j.appender.WEBAPP.datePattern=yyyy-MM-dd 
log4j.appender.WEBAPP.layout.ConversionPattern=%d %-5p %c:%L %x - %m%n 
log4j.appender.WEBAPP.MaxBackupIndex = 10 

Итак, когда развертывается только одна война в дикой природе, нет никаких проблем, но когда я развертываю более одной войны с другим именем с той же структурой, весь мой регистратор всех файлов War развернул запись в последнем указанном имени файла.

Таким образом, используя код, приведенным выше, если я развернуть другой веб-приложение под названием Webapp2.war что нагрузки webapp2.log4j.properties, которые хотят писать на другом пути различного по webapp1:

log4j.logger.it=DEBUG,WEBAPP 
log4j.appender.WEBAPP=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.WEBAPP.DatePattern='.'yyyy-MM-dd 
log4j.appender.WEBAPP.File=/Users/otherpath/WEBAPP.log 
log4j.appender.WEBAPP.layout=org.apache.log4j.PatternLayout 
log4j.appender.WEBAPP.datePattern=yyyy-MM-dd 
log4j.appender.WEBAPP.layout.ConversionPattern=%d %-5p %c:%L %x - %m%n 
log4j.appender.WEBAPP.MaxBackupIndex = 10 

предыдущего webapp1.war и этот последний будет записывать журналы в /Users/otherpath/WEBAPP.log все вместе.

Я использую библиотеку log4j-1.2.17.jar внутри каждого файла войны.

Я пытаюсь изменить имя пользователя log4j для каждого log4j.properties, такого как WEBAPP1 и WEBAPP2 без результатов.

Есть способ решить эту проблему? Благодаря

+1

Почему бы вам не использовать протоколирование предоставленный WildFly? Вся конфигурация может быть выполнена в standalone.xml, и вы сможете настраивать приложения для каждого приложения, и вам не нужно заботиться о перезагрузке изменений во время выполнения. –

+0

Решен с заготовкой, предоставленной Wildfly! Благодарю. – Gianca

ответ

0

решаемые с помощью WildFly standalone.xml:

... 
    <logging-profiles> 
       <logging-profile name="Webapp1"> 
        <file-handler name="Webapp1File"> 
         <level name="DEBUG"/> 
         <file relative-to="jboss.server.log.dir" path="webapp1.log"/> 
        </file-handler> 
        <root-logger> 
         <level name="DEBUG"/> 
         <handlers> 
          <handler name="Webapp1File"/> 
         </handlers> 
        </root-logger> 
       </logging-profile> 
      </logging-profiles> 

И в каждой войне вставить файл манифеста с:

Logging-Profile: Webapp1 
Смежные вопросы