Tomcat - 一个拥有2个webapps的主机

时间:2014-05-13 08:46:10

标签: java log4j tomcat7 classloader

我在Apache 2下使用tomcat 7,我需要在相同主机下使用2个webapp,例如localhost。

之前我使用过2个webapps,但是在不同的域上,所以我有不同的主机等。

目前,我正在努力使用log4j并在tomcat启动时注意到以下内容:

  1. A.war已部署,我在A.log文件上看到日志
  2. B.war已部署,但我没有看到日志,有时我将日志记录在 A.log而不是B.log
  3. 当我以编程方式在B.war中加载log4j时,如PropertyConfigurator.configure(“”)我开始在B.log上登录,但app A停止写日志。 看起来它使用相同的类加载器并加载/更改相同的log4j

    你能告诉我我做错了什么吗?我知道每个tomcat实例都使用一个JVM,但我如何确定每个应用程序使用每个类别?

1 个答案:

答案 0 :(得分:1)

您可以运行2个webapps并为这两个webapps添加配置。或者您可以在文件中使用单个配置和dd多个包。

例如

<appender name="services" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/shared_services.log</file>
    <encoder>
        <pattern>%d{ISO8601} | %-5level | %thread | %logger{1} | %message%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <maxIndex>30</maxIndex>
        <fileNamePattern>services.log.%i</fileNamePattern>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
</appender>

 <appender name="services1" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/shared_services.log</file>
    <encoder>
        <pattern>%d{ISO8601} | %-5level | %thread | %logger{1} | %message%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <maxIndex>30</maxIndex>
        <fileNamePattern>services1.log.%i</fileNamePattern>
    </rollingPolicy>
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <MaxFileSize>10MB</MaxFileSize>
    </triggeringPolicy>
</appender>


<root level="ALL">
    <appender-ref ref="test"/>
</root>

<logger name="org" level="INFO"/>

<logger name="org.apache.cxf.interceptor" level=""/>



 </configuration>

在上面的示例中创建了2个文件。