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

Java 8 + Jersey 2.26环境下LoggingFilter未执行求助

解决Jersey 2.26日志记录失效问题

看起来你遇到的是Jersey应用里日志不输出的常见问题,我来帮你一步步排查和解决:

1. 确认日志依赖是否齐全

Jersey本身不会自带完整的日志实现,需要你补充对应的日志框架依赖。如果你用的是JDK自带的java.util.logging.Logger,得先确保依赖和配置都到位;如果想切换到SLF4J+Logback或者Log4j2这类更灵活的框架,也需要添加对应依赖包。

针对JDK Logging的配置

先检查pom.xml里是否包含Jersey的核心日志相关依赖:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-common</artifactId>
    <version>2.26</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.26</version>
</dependency>
<!-- 如果需要记录HTTP请求/响应的详细日志,添加这个依赖 -->
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-logging</artifactId>
    <version>2.26</version>
</dependency>

接着在src/main/resources目录下创建logging.properties配置文件,指定日志输出级别和处理器:

# 指定日志处理器为控制台输出
handlers=java.util.logging.ConsoleHandler
# 你的资源类所在包的日志级别,设为FINEST可以输出所有级别的日志
mypackage.MyResource.level=FINEST
# 控制台处理器的日志级别
java.util.logging.ConsoleHandler.level=FINEST
# 日志格式
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter

启动应用时需要指定这个配置文件:

  • 命令行启动:java -Djava.util.logging.config.file=src/main/resources/logging.properties -jar your-app.jar
  • Eclipse运行:在Run Configuration的VM Arguments里添加-Djava.util.logging.config.file=${project_loc}/src/main/resources/logging.properties

2. 检查Logger的初始化和使用是否正确

你的资源类里的Logger初始化一定要绑定当前类的Class对象,这样才能精准控制日志级别:

private static final Logger logger = Logger.getLogger(MyResource.class.getName());

然后在代码里调用对应级别的日志方法,比如:

logger.info("处理请求开始");
logger.warning("参数格式存在异常");
logger.severe("调用Service时发生严重错误");

注意:如果你的日志级别配置的是INFO,那FINE、FINER这类低级别的日志是不会输出的,要对应调整配置或调用的方法。

3. 添加Jersey请求日志过滤器(可选)

如果需要记录完整的HTTP请求和响应日志,可以在Jersey的Application类里注册LoggingFeature:

package mypackage;

import org.glassfish.jersey.logging.LoggingFeature;
import org.glassfish.jersey.server.ResourceConfig;
import java.util.logging.Level;

public class MyApplication extends ResourceConfig {
    public MyApplication() {
        // 扫描你的资源类所在包
        packages("mypackage");
        // 注册日志过滤器,设置日志级别、输出内容和 payload 长度限制
        register(new LoggingFeature(Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME),
                Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, 10000));
    }
}

这样就能在控制台看到包含请求头、响应体在内的完整HTTP交互日志了。

4. 排查Eclipse运行环境的日志配置

有时候Eclipse自带的日志配置会覆盖项目的设置,你可以通过Window > Preferences > Java > Logging路径检查配置,确保项目的logging.properties被正确加载,或者直接在这里临时调整日志级别测试。

如果以上步骤都试过还是不行,可以把你的pom.xml完整内容和Logger的具体使用代码贴出来,我再帮你进一步定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:17:28