如何方便地存储常见日志和客户端特定日志

时间:2013-06-07 19:16:40

标签: java logging

我有一个庞大的代码库,可以提供有关大学的信息请求。有一个基本框架代码,我们有一些单独的包用于college1,college2等,

每当有关于大学X的某些信息的请求时,都会触发框架代码和大学特定代码。我希望看到为X公司的所有请求生成的日志转到一个位置,而公司Y转到一个位置。

如何使用JUL或apache的logging.properties文件来实现此目的?如何确保公司X的公共框架库编写的日志到一个位置,公司Y的公共框架库编写的日志到其他位置?

1 个答案:

答案 0 :(得分:0)

我会有一个包含appender的xml文件来指定哪些包进入哪个日志文件。

然后,您可以在应用程序入口点加载xml文件。以下是我在当前项目中使用的示例

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <param name="threshold" value="error" />
        <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%t] %p %c - %m%n" />
        </layout>
    </appender>

    <appender name="codebaseXAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="codebaseX.log" />
        <param name="MaxFileSize" value="10MB" />
        <param name="MaxBackupIndex" value="10"/>
        <layout class="org.apache.log4j.PatternLayout"> 
                <param name="ConversionPattern" value="[%t] %d %p %c - %m%n"/>
        </layout>
    </appender>

    <appender name="codebaseYAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="codebaseY.log" />
        <param name="MaxFileSize" value="10MB" />
        <param name="MaxBackupIndex" value="10"/>
        <layout class="org.apache.log4j.PatternLayout"> 
                <param name="ConversionPattern" value="[%t] %d %p %c - %m%n"/>
        </layout>
    </appender>

    <!-- Root Logger -->
    <root>
        <priority value="error" />
        <appender-ref ref="console" />
    </root>

    <!-- Application logger -->
    <logger name="com.codebasePackageX" additivity="true">
        <level value="info" />
        <appender-ref ref="codebaseXAppender" />
    </logger>

    <!-- Application logger -->
    <logger name="com.codebasePackageY" additivity="true">
        <level value="info" />
        <appender-ref ref="codebaseYAppender" />
    </logger>

    </log4j:configuration>