You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Log4J2日志文件随机缺失条目问题求助

Log4J日志异常排查(SAP Hybris环境)

环境信息

  • SAP Hybris 6.0.0(SAP Commerce)
  • openJDK 8
  • Apache Tomcat
  • Log4j2 2.4.1(SLF4J作为门面)
  • CentOS 7

日志使用代码

Logger LOGGER = LoggerFactory.getLogger(SomeClass.class);
try
{
   // 抛出异常的业务代码
} catch (Exception e) {
   LOGGER.error("Some exception occured.");
}

Log4j2 XML配置

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ [y] hybris Platform
  ~ 
  ~ Copyright (c) 2000-2016 SAP SE
  ~ All rights reserved.
  ~ 
  ~ This software is the confidential and proprietary information of SAP 
  ~ Hybris ("Confidential Information"). You shall not disclose such 
  ~ Confidential Information and shall use it only in accordance with the 
  ~ terms of the license agreement you entered into with SAP Hybris.
  -->

<!-- Platform-only xml configuration for Log4j2. Not used by default, can be treated as an example -->
<!-- To enable set in local.properties: log4j2.config.xml=hybris-log4j2.xml -->
<!-- Keep in mind that xml configurations cannot be merged together unlike ones set via hybris properties. -->
<!-- shutdownHook is disabled because we invoke it programatically after shutting down hybris registry -->
<Configuration status="WARN" shutdownHook="disable" packages="de.hybris.platform.util.logging">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%highlight{%-5p [%t] %X{RemoteAddr}%X{Tenant}%X{CronJob}[%c{1}] %m%n}"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="de.hybris.platform.servicelayer.hmc" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>

        <Logger name="de.hybris.platform.spring.ctx.TenantIgnoreXmlWebApplicationContext" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="de.hybris.platform.spring.ctx.CloseAwareApplicationContext" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>

        <Logger name="org.apache.ddlutils.alteration.ModelComparator" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="hsqldb.db" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="de.hybris.platform.spring.IgnoreTenantScopeMetadataResolver" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="de.hybris.platform.spring.ctx.ScopeTenantIgnoreDocReader" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>

        <Logger name="de.hybris.platform.util.logging.LoggingFrameworksBridgeTest" level="ALL" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>

        <Logger name="de.hybris.cronjobtutorial.MyJobPerformable" level="ALL" additivity="false">
            <AppenderRef ref="Console"/>
        </Logger>

        <Logger name="org.springframework.aop.framework.Cglib2AopProxy" level="error">
            <AppenderRef ref="Console"/>
        </Logger>
        <Logger name="org.springframework" level="warn">
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

异常现象

  • 部分日志仅显示ANSI颜色控制符号,自定义日志消息缺失
  • 部分Logger仅打印异常堆栈跟踪,自定义消息被省略
  • 甚至System.out.println输出的内容也无法正常显示
  • 多数Logger工作正常,已排除日志级别及Log4J配置本身的问题;移除%highlight高亮格式后问题依旧

排查更新

  1. 已附上HAC日志面板截图
  2. 将Log4J配置改为使用RollingFile Appender(而非输出到SYSTEM_OUT)后,所有日志条目正常显示,怀疑问题出在Tomcat与控制台输出相关的环节

排查方向建议

  • 检查Tomcat的catalina.out输出是否存在缓冲或编码问题:CentOS环境下Tomcat默认的控制台输出可能使用特定编码,需确认是否与Log4J输出的编码一致(比如UTF-8)
  • 检查Tomcat的conf/logging.properties配置:确认控制台Handler的设置,比如java.util.logging.ConsoleHandler的编码、格式化规则,是否与Log4J的输出产生冲突
  • 验证Hybris平台对Tomcat输出的拦截或重写逻辑:检查de.hybris.platform.util.logging包下的相关类是否对SYSTEM_OUT做了特殊处理
  • 测试直接在Tomcat中运行简单的Log4J控制台输出程序:排除Hybris平台本身的干扰,确认Tomcat环境下Log4J控制台输出是否正常
  • 检查JVM参数中是否有影响控制台输出的配置:比如-Dfile.encoding、-Dsun.stdout.encoding等参数是否设置正确,是否与系统终端编码匹配

内容的提问来源于stack exchange,提问作者jahra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:10:00