簡體   English   中英

當兩個 logback.xml 在 Websphere 服務器上運行時,日志被合並

[英]Logs getting merged when two logback.xml runs on Websphere server

我面臨的問題是,我有一個應用程序使用包含 logback.xml 的 jar 文件(jar1)(具有其日志文件的目標文件夾)和另一個應用程序也使用包含另一個 logback.xml 的 jar 文件(jar2) (其日志文件具有不同的目標文件夾)。 對於第一個應用程序,我使用了一個帶有 jar1 共享文件配置的類加載器。 現在在這種情況下,日志正在合並。 在第二個應用程序的第一個目標文件夾中創建了一些日志,反之亦然。 我正在使用 WebSphere9。 有沒有辦法在其特定的目標文件夾中創建日志文件,而不合並日志?

保留第一個類加載器,我嘗試使用帶有 jar2 共享文件配置的第二個類加載器,用於第二個應用程序。 但在這種情況下,任何一個應用程序都可以工作。 所以這個解決方案被排除了。

第一次申請的logback.xml:

<?xml version="1.0" encoding="UTF-8"?>

<appender name="consoleAppender"
    class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%-50(%level %logger{35}) cn=%contextName - %msg%n</Pattern>
    </layout>
</appender>

<appender name="mainAppender"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${USR_HOME}/yoda.log</file>
    <rollingPolicy
        class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>${USR_HOME}/yoda.%i.log</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>20</maxIndex>
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <triggeringPolicy
        class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
    </triggeringPolicy>
    <encoder
        class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern%-50(%level %logger{35}) cn=%contextName - %msg%n</Pattern>
    </encoder>
    <prudent>false</prudent>
</appender>

<root name="MAIN_LOGGER" level="ERROR" additivity="true">
    <appender-ref ref="mainAppender" />
</root>

第二個應用程序的 logback.xml:

 <?xml version="1.0" encoding="UTF-8"?>

<appender name="consoleAppender"
    class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%-50(%level %logger{35}) cn=%contextName - %msg%n</Pattern>
    </layout>
</appender>

<appender name="mainAppender"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${AG_HOME}/kenobi.log</file>
    <rollingPolicy
        class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
        <fileNamePattern>${AG_HOME}/kenobi.%i.log</fileNamePattern>
        <minIndex>1</minIndex>
        <maxIndex>20</maxIndex>
        <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <triggeringPolicy
        class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
        <maxFileSize>50MB</maxFileSize>
    </triggeringPolicy>
    <encoder
        class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern%-50(%level %logger{35}) cn=%contextName - %msg%n</Pattern>
    </encoder>
    <prudent>false</prudent>
</appender>

<root name="MAIN_LOGGER" level="ERROR" additivity="true">
    <appender-ref ref="mainAppender" />
</root>

看起來只有一個 logback 配置文件被兩個應用程序共享的類加載器拾取。 不要將 logback 或 log4j 配置文件打包到您的應用程序 jar 文件中,而是嘗試將這兩個配置文件添加到 WebSphere 上定義的兩個共享庫中,並配置您的應用程序以引用您的共享庫。

查看 IBM Knowledge Center 關於參考共享庫的文章。 https://www.ibm.com/support/knowledgecenter/SS7K4U_9.0.5/com.ibm.websphere.zseries.doc/ae/tcws_sharedlib_app.html

在這兩個 logback.xml 文件中,您只定義了根級別記錄器。 來自記錄器文件中所有應用程序的根級別記錄器日志。

嘗試,在 logback 中定義單獨的記錄器

<logger name="com.x.y.z" level="INFO" additivity="false">
    <appender-ref ref="refToAppender" />        
</logger>

暫無
暫無

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

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