2012-07-12 90 views
0

我已經配置Tomcat的server.xml中有多個連接器:的Apache Tomcat支持多種應用登錄多個服務

<Service name="Catalina"> 

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" 
      maxThreads="150" scheme="https" secure="true" 
      keystoreFile="C:\somekey.keystore" keystorePass="mykeypass" 
      clientAuth="false" sslProtocol="TLSv1" /> 
<Engine name="Catalina" defaultHost="localhost"> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
     resourceName="UserDatabase"/> 
    <Host name="localhost" appBase="webapps" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
      prefix="access_log." suffix=".txt" pattern='%h %l %u %t "%r" %s %b %p %D %S' resolveHosts="false"/> 
    </Host> 
</Engine> 

<Engine name="CatalinaA" defaultHost="localhost"> 

    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
     resourceName="UserDatabase"/> 

    <Host name="localhost" appBase="webappsA" 
     unpackWARs="true" autoDeploy="true" 
     xmlValidation="false" xmlNamespaceAware="false"> 

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logsA" 
      prefix="access_log_A." suffix=".txt" pattern='%h %l %u %t "%r" %s %b %p %D %S' resolveHosts="false"/> 

    </Host> 
</Engine> 

我也有部署了兩個Web應用程序,一個在webapps(APPP1)和另一個在webappsA(APPP2)中。
這裏是我的logging.properties:

  handlers = 2APPP1.org.apache.juli.FileHandler, 3APPP2.org.apache.juli.FileHandler 
    .handlers = 2APPP1.org.apache.juli.FileHandler, 3APPP2.org.apache.juli.FileHandler 

    2APPP1.org.apache.juli.FileHandler.level = FINEST 
    2APPP1.org.apache.juli.FileHandler.directory = ${catalina.base}/logs 
    2APPP1.org.apache.juli.FileHandler.prefix = APPP1. 

    3APPP2.org.apache.juli.FileHandler.level = FINEST 
    3APPP2.org.apache.juli.FileHandler.directory = ${catalina.base}/logsA 
    3APPP2.org.apache.juli.FileHandler.prefix = APPP2. 

    java.util.logging.ConsoleHandler.level = ALL 
    java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

    ############################################################ 
    # Facility specific properties. 
    # Provides extra control for each logger. 
    ############################################################ 

    org.apache.catalina.core.ContainerBase.[Catalina].[/APPP1].level = INFO 
    org.apache.catalina.core.ContainerBase.[CatalinaA].[/APPP2].level = INFO 

    org.apache.catalina.core.ContainerBase.[Catalina].[/APPP1].handlers = 2APPP1.org.apache.juli.FileHandler 
    org.apache.catalina.core.ContainerBase.[CatalinaA].[/APPP2].handlers = 3APPP2.org.apache.juli.FileHandler 
      org.apache.catalina.level = WARNING 

日誌被分離到不同的文件夾,訪問日誌是確定兩個應用程序,但是這個Tomcat日誌記錄每個應用程序的請求既APPP1.log和APPP2。日誌文件。

回答

0

處理器= 2APPP1.org.apache.juli.FileHandler,3APPP2.org.apache.juli.FileHandler

.handlers = 2APPP1.org.apache.juli.FileHandler,3APPP2.org.apache。 juli.FileHandler

您的記錄器註冊了兩次,因此它們被調用兩次。嘗試只註冊一次。

+0

不可以,'處理程序行'聲明處理程序以及調用它們的內容,'.handlers'行將它們都提供給''''的根記錄器。希望你有一個無JULI的日子,因爲它讓我很平凡。 – 2013-10-09 02:37:10

0

我把logging.properties放到每個應用程序的WEB-INF/classes中,並且從ApacheTomcat/conf /目錄中刪除了logging.properties ,所有東西都像一個魅力一樣。

+0

「魅力」的意思是「我必須解開WAR文件並在文件正常工作之前破解文件」。不過,我認爲你找到了唯一的方法。我[懷疑]它實際上可以做的方式(http://stackoverflow.com/questions/19261727/in-tomcat-juli-do-the-facility-specific-loggers-become-per-webapp-logger-root)你(相當合理,恕我直言)預計它的工作。 – 2013-10-09 02:33:19

+0

我剛剛打包與我的戰爭logging.properties – 2016-08-01 14:38:20

1

通過包括線:

.handlers = 2APPP1.org.apache.juli.FileHandler, 3APPP2.org.apache.juli.FileHandler 

你到根記錄器分配這兩個文件的處理程序。與這些文件處理程序中的每一個相關聯的文件都將獲得默認記錄器的輸出(即所有輸出)。

+1

這完全解釋了行爲 - 日誌由根處理器(它發出的處理程序),而不是'per-webapp'記錄器處理 - 他們完全跳過了。 – 2013-10-09 02:30:44