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

NetBeans 16搭配GlassFish 6时log4j2输出显示异常

解决NetBeans中GlassFish输出窗口log4j2日志显示异常的问题

问题分析

你遇到的问题根源在于:GlassFish会对SYSTEM_OUT的输出内容添加|#]标记进行包装,而NetBeans的日志解析器依赖这个标记分割日志条目。当log4j2直接输出多行日志到SYSTEM_OUT时,换行后的内容脱离了标记包裹,导致显示错乱,但GlassFish本地日志文件会完整处理这些内容,因此文件内显示正常。

解决方案

方案1:让log4j2通过GlassFish日志系统输出(推荐)

通过log4j2与Java Util Logging(JUL)的桥接,让log4j2日志接入GlassFish自带的JUL框架,由GlassFish统一处理日志格式,NetBeans就能正确解析显示。

  1. 添加依赖:如果用Maven,在pom.xml中加入log4j-jul适配器:
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-jul</artifactId>
    <version>2.20.0</version>
    <scope>runtime</scope>
</dependency>
  1. 修改log4j2配置:将原Console appender替换为JDKLogAppender:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <JDKLogAppender name="JDKLog" logName="your.app.namespace"/>
    </Appenders>
    <Loggers>
        <Root level="DEBUG">
            <AppenderRef ref="JDKLog"/>
        </Root>
    </Loggers>
</Configuration>

此时log4j2日志会通过JUL传递给GlassFish日志系统,NetBeans输出窗口的显示效果将与服务器日志文件一致。

方案2:调整NetBeans日志解析设置

无需修改代码和配置,直接关闭NetBeans对GlassFish日志的自动解析:

  • 在NetBeans的GlassFish输出窗口右上角,点击齿轮图标打开「Options」;
  • 找到「Log Parsing」相关选项,取消勾选「Parse server logs」,或者调整日志分隔规则,避免|#]被当作日志条目结束标记。

方案3:修改log4j2输出格式

调整PatternLayout,确保多行日志被视为一个完整条目,避免被GlassFish包装分割:

<PatternLayout pattern="%d{HH:mm:ss.SSS} [%c{1}] %-5level - %msg%n%nopex"/>

添加%nopex可防止异常堆栈被拆分,同时确保整个日志条目被GlassFish正确包裹。

验证

修改配置后重启GlassFish服务器,重新运行应用,查看NetBeans输出窗口的日志显示是否恢复正常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:05:40