Apache Tomcat为多个应用程序记录多个服务

时间:2012-07-12 19:00:48

标签: tomcat logging

我已将Tomcat server.xml配置为具有多个连接器:

   <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.log文件中。

3 个答案:

答案 0 :(得分:1)

包括以下行:

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

您要将这两个文件处理程序分配给根记录器。与每个文件处理程序关联的文件从默认记录器获取输出(即所有输出)。

答案 1 :(得分:0)

  

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

     

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

您的记录器已经注册了两次,因此它们会被调用两次。尝试只注册一次。

答案 2 :(得分:0)

我将logging.properties放入每个应用程序的WEB-INF / classes中,并删除了logging.properties 从ApacheTomcat / conf /目录开始,一切都像魅力一样。