【问题标题】:REST JAX-RS LoggingREST JAX-RS 日志记录
【发布时间】:2024-06-19 02:35:02
【问题描述】:

我已经按照HelloWorld 的示例成功完成了我的第一个 REST。现在,我想在代码中添加日志记录功能。例如,我想拥有任何日志框架(Log4j、JUL)并能够登录代码并输出到文件。如何实现对我的 REST 代码的日志记录?

@Path("/hello")
public class HelloWorldService {
    Logger log = Logger.getLogger("className");

    @GET
    @Path("/{param}")
    public Response getMsg(@PathParam("param") String msg) {

        String output = "Jersey say : " + msg;

        //for example, here.  hopefully to a file  
        log.info("Log Jersey say : " + msg);

        return Response.status(200).entity(output).build();

    }
}

我正在使用 Jersey 1.19,Tomcat 8

【问题讨论】:

    标签: java rest tomcat logging jersey


    【解决方案1】:

    您可以使用开源的Apache Log4j 库。在您的 pom 中添加以下依赖项或从 here 下载。

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    

    log4j.properties

    # Root logger option
    log4j.rootLogger=INFO, file
    
    # Direct log messages to a log file
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    
    #Redirect to Tomcat logs folder
    #log4j.appender.file.File=${catalina.home}/logs/logging.log
    
    log4j.appender.file.File=C:\\logigng.log
    log4j.appender.file.MaxFileSize=10MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    使用此配置,所有日志记录都将重定向到您指定的日志文件。

    来源:http://www.mkyong.com/logging/log4j-log4j-properties-examples/

    如何使用 Log4j 记录消息?

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

    记录具有不同优先级的消息,例如debuginfowarnerrorfatal。通常,你只需要使用调试或错误。

    //logs a debug message
    if(logger.isDebugEnabled()){
        logger.debug("This is debug");
    }
    
    //logs an error message with parameter
    logger.error("This is error : " + parameter);
    
    //logs an exception thrown from somewhere
    logger.error("This is error", exception);
    

    要将记录器设置为debug 模式,请在您的属性文件中进行更改

    log4j.rootLogger=DEBUG, file
    

    【讨论】: