[英]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.