当前位置: 首页 > 知识库问答 >
问题:

使用另一个应用程序的日志文件在weblogic服务器上使用logback的log4j应用程序

申屠涛
2023-03-14

在我的weblogic服务器中,我有两个独立的应用程序。App1是旧的Web应用程序,使用log4j提供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启动:

<?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。日志我真的很困惑,为什么会发生这种事,又是如何发生的

共有1个答案

关苗宣
2023-03-14

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

从slf4j手册中发现:

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

桥接jar负责通过slf4j将log4j日志、java util日志、commonshtml" target="_blank">日志重定向到logback。排除桥接jar依赖项后,得到了预期的结果。

 类似资料:
  • 我有一个nodejs应用程序,它只不过是一个使用微软botbuilder框架构建的机器人。我创建了azure应用程序服务来托管此应用程序。我想找到一种方法,将所有应用程序日志和web服务器日志(如果可能的话)持久化到某个持久化存储中。就像本地web应用程序一样,我们可以在应用程序服务器上查找日志 在做了一些研究之后,我找到了微软关于这方面的官方文件,但看起来它有以下局限性。 我们不能使用应用程序服

  • 我知道和都在/usr/local/Spark/jars中,尽管在pom.xml中排除了这些jar,但Spark很可能引用了这些jar,因为如果删除它们,在spark-submit的运行时会给出一个ClassNotFoundException。 我的问题是:有没有一种方法可以在我的应用程序中使用Logback实现本机日志记录,同时保留Spark的内部日志记录功能。理想情况下,我希望将我的日志返回应用

  • 我们目前正在将几个Grails(2.4.4)应用程序部署到一个Tomcat7服务器上,并且已经完全按照这里所描述的tomcat-SLF4j-logback配置了日志记录。 我们希望通过一个logback.xml文件配置所有grails应用程序,并将所有应用程序记录到一个文件中,但按照grails的application.properties中定义的应用程序名称区分日志消息: 我们的logback.

  • 我正在将我的应用程序从JBoss 6 AS迁移到Wildfly 8.2.0 AS。我可以实现按预期创建应用程序日志,但需要独立/日志/服务器。日志文件中也充满了应用程序日志。我正在使用独立的完整ha。xml配置。任何人都可以建议一个选项,禁止将应用程序日志填充到服务器中。日志 以下部分摘自standalone-full-ha.xml:

  • 我目前正在使用Azure'Web应用Linux',它利用docker容器通过私有注册表(Azure容器注册表)托管java应用和python应用,我还没有找到收集和分析应用程序日志的方法容器。 目标是通过OMS、application insight或storage analytics分析应用程序日志。我知道“linux上的Web应用程序”仍处于预览状态,但没有关于当前支持哪些功能的官方文档。 A