【问题标题】:Application with log4j using log file of another application with logback on weblogic server使用 log4j 的应用程序使用另一个应用程序的日志文件,在 weblogic 服务器上使用 logback
【发布时间】:2017-07-19 07:32:40
【问题描述】:

在我的 weblogic 服务器中,我有两个独立的应用程序。 App1 是带有使用 log4j 的 Web 服务的旧 Web 应用程序:

# Console logger
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p %c %x - %m%n
log4j.appender.CONSOLE.Threshold=ERROR
# APP logger 
log4j.appender.APP=org.apache.log4j.DailyRollingFileAppender
log4j.appender.APP.DatePattern=.yyyy-MM-dd-HH
log4j.appender.APP.File=${logfile.app}
log4j.appender.APP.encoding=UTF-8
log4j.appender.APP.layout=org.apache.log4j.PatternLayout
log4j.appender.APP.layout.ConversionPattern=%d{DATE} %-5p [%t] %-15c : %m%n

log4j.rootLogger=ERROR, CONSOLE

log4j.logger.cz.isvs=INFO, APP
log4j.logger.org.springframework=WARN, APP

${logfile.app} is replaced during build to target/log/app1.log

当只部署了这个应用程序时,一切正常。

第二个 app2 是使用 logback 的带有 web 服务应用程序的 spring boot:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <springProfile name="default">
        <property name="LOGS_HOME" value="/app/app_logs/app2" />

        <appender name="appfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>${LOGS_HOME}.log</file>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <Pattern>
                    %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
                </Pattern>
            </encoder>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <fileNamePattern>${LOGS_HOME}.log.%d{yyyy-MM-dd-HH}</fileNamePattern>
            </rollingPolicy>
        </appender>

        <root level="error">
            <appender-ref ref="appfile" />
        </root>

        <logger name="cz.isvs" additivity="false">
            <level value="debug" />
            <appender-ref ref="appfile" />
        </logger>


    </springProfile>

</configuration>

当我将第二个应用程序部署到我的 weblogic 服务器时,两个应用程序都登录到 app2.log。我真的很困惑为什么以及如何发生这种情况

【问题讨论】:

    标签: java spring log4j weblogic logback


    【解决方案1】:

    最近,我在 weblogic 12c 中部署的 spring boot 遇到了类似的问题。经过调查发现spring boot使用的是spring boot logger starter,它有一些依赖jar,即sl4fj、logback、jcl-over-sl4j、jul-to-slf4j、log4j-over-slf4j.jar等。

    来自slf4j manual 发现这个:

    JCL over SLF4J 的实现,即 jcl-over-slf4j.jar,将 允许您的项目零碎迁移到 SLF4J,而不会中断 与使用 JCL 的现有软件的兼容性。相似地, log4j-over-slf4j.jar 和 jul-to-slf4j 模块将允许您 将 log4j 和 java.util.logging 调用分别重定向到 SLF4J。

    桥接 jar 负责通过 slf4j 将 log4j 日志、java util 日志、commons 日志日志重定向到 logback。排除桥接jar依赖后得到了预期的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 1970-01-01
      • 2013-08-29
      • 2017-06-26
      相关资源
      最近更新 更多