首页 > 解决方案 > websphere 9.0.5.X 没有选择 logback.xml

问题描述

Websphere 没有拾取 logback.xml。另一方面,如果我切换到 log4j2.xml,它会被自动拾取。不知道为什么服务器日志配置优先于 logback。

我的logback配置:

日志正在写入 AppSrv01\logs\server1\system_out.log 中,而与 logback.xml 中的记录器级别和附加程序配置无关

依赖:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
    </dependency>

WEB-INF/classes/logback.xml:文件/控制台附加程序都没有运气

<configuration>

  <property name="HOME_LOG" value="logs/app.log"/>

    <appender name="STDOUT" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${HOME_LOG}</file>

        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>logs/archived/app%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <maxFileSize>10MB</maxFileSize>
            <totalSizeCap>20GB</totalSizeCap>
            <maxHistory>60</maxHistory>
        </rollingPolicy>

        <encoder>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </encoder>
    </appender>

  <logger name="com.sample.package" level="INFO">
    <appender-ref ref="STDOUT" />
  </logger>
  
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

笔记:

  1. 类加载器顺序设置为“最后一个父级”。
  2. 我的应用程序正在使用 slf4j 记录器。
  3. 排除 JBoss-deployment-structure.xml 中的日志子系统后,相同的 logback 配置在 JBoss 中工作(无法为 WebSphere 找到相同的配置)。

失败尝试:

  1. 取出 logback.xml 并将其压缩为 jar,并指向共享库
  2. 使用 slf4j-simple 而不是 sl4j-jdk14,日志已完全停止写入。

我的log4j2配置,仅供比较:

依赖:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>${log4j.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j.version}</version>
    </dependency>

WEB-INF/classes/log4j2.xml:两个控制台/文件附加程序都在工作

<Configuration status="INFO">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <logger name="com.sample.package" level="INFO">
            <appender-ref ref="Console" />
        </logger>
        <Root level="WARN">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

标签: javajbosswebspherelog4j2logback

解决方案


推荐阅读