应用log4j使用另一个应用程序的日志文件,并在weblogic服务器上进行回溯

时间:2017-07-19 07:32:40

标签: java spring log4j weblogic logback

在我的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是spring boot,还有使用logback的web服务应用程序:

<?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。我真的很困惑为什么以及如何发生这种情况

1 个答案:

答案 0 :(得分:0)

最近我遇到了类似的问题,在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负责将log4j日志,java util日志,commons日志记录日志重定向到slf4j的logback。排除了桥接jar后,依赖关系得到了预期的结果。