java - 在 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>
解决方案
只需 @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
,这样您就不必在想要更改日志框架时更改注释。
推荐阅读
- javascript - HTTP 请求被 CORS 策略阻止 - JQUERY AJAX 请求
- powershell - 执行 Office365 使用报告的 PowerShell 脚本所需的用户角色是什么?
- angular - 以角度显示单行的多行详细信息
- javascript - Nodejs页面(HTML)转换,例如当我单击主页中的按钮跳转到登录页面时如何更改页面?
- javascript - 面临打字稿问题 var editIndex:任何绑定元素“editIndex”隐式具有“任何”类型
- java - 在 Oracle 数据库中写入时,Java Springboot 应用程序没有增加 ID,而是出现错误
- python - 尝试访问 Django Admin 文档不会引发反向匹配错误
- python-3.x - 无法使用 xport 将 xport 文件读入 python
- docker - 无法在 docker 映像中安装 Jmeter 插件管理器
- laravel - 在 laravel 中创建 db:seed 作为整数时出错