簡體   English   中英

Log4j外部文件加載-多重戰爭

[英]Log4j external file loading - multiple war

我在wildfly的一個實例中有多個Web應用程序(多次戰爭)。 每個Web應用程序在以servlet開頭的情況下,讀取存儲在WILDFLY_HOME / standalone / configuration目錄中的名為webapp1.log4j.properties的 log4j.properties文件:

<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部署到wildfly中時就沒有問題,但是當我部署多個具有相同名稱,結構相同的War時,部署的所有War文件的所有記錄器都將寫入定義的最后一個文件名。

因此,使用上面的代碼,如果我部署另一個名為Webapp2.war的Webapp,該Webapp加載了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和最后一個webapp1.war會將日志全部一起寫入/Users/otherpath/WEBAPP.log

我在每個war文件中使用log4j-1.2.17.jar庫。

我嘗試更改每個log4j.properties(例如WEBAPP1和WEBAPP2)的log4j追加器名稱,但沒有結果。

有辦法解決嗎? 謝謝

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM