首页 > 解决方案 > 在 Java Spring MVC 中记录错误

问题描述

我正在尝试找出日志记录,我希望每次调用日志记录时,这样做在哪里更好?归档?到命令行?我也没有web.хml,怎么做最好呢?这是代码中我要粘贴的地方

@Controller
public class MyErrorController implements ErrorController {

    @RequestMapping("/error")
    public String handleError() {
        //do something like logging
        return "error404";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}

我在网上看到这个,不明白怎么连接

@RestController
@ Log4j2
public class LombokLoggingController {
  
     @RequestMapping ("/ lombok")
     public String index () {
         log.trace ("A TRACE Message");
         log.debug ("A DEBUG Message");
         log.info ("An INFO Message");
         log.warn ("A WARN Message");
         log.error ("An ERROR Message");
  
         return "Howdy! Check out the Logs to see the output ...";
     }
}

这是我的 pom.xml 文件

<properties>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>jquery</artifactId>
        <version>2.2.4</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.oauth.boot</groupId>
        <artifactId>spring-security-oauth2-autoconfigure</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.webjars</groupId>
        <artifactId>bootstrap</artifactId>
        <version>3.3.7</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-freemarker</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

标签: javaspring

解决方案


只需 @Slf4j使用记录器注释您的控制器并使用它。

log.error("this is an error")

Sl4j 只是日志框架的一个门面。Log4j2 不起作用,因为 Spring boot 使用 Logback 作为默认记录器。

如果你想使用 Log4j2 而不是 Logback。需要排除spring-boot-starter-web中的spring-boot-starter-logging依赖,添加spring-boot-starter-log4j2。

您可以使用其中一个,@Log4j2或者,@Slf4j但我建议您使用@Slf4j,这样您就不必在想要更改日志框架时更改注释。


推荐阅读