如何将Spring Boot日志记录数据放入数据库?我想将所有INFO和ERROR消息放入数据库

时间:2016-12-20 09:10:51

标签: java spring logging model-view-controller spring-boot

所以我正在为应用程序创建管理面板,我想将所有用户问题和用户操作都放到数据库中,以便我可以在管理面板中显示它们。这样管理员就不必去检查包含他们不需要使用的其他信息的日志文件。然而,我还需要自己记录文件,以便我可以看到服务器是否发生了某些事情。

最好的方法是什么,如何全局设置这种日志,这样我就不必在每个控制器中手动将它们放到数据库中了?

2 个答案:

答案 0 :(得分:3)

你可以使用特殊的数据库appender(org.apache.log4j.jdbc.JDBCAppender)这里是解释链接https://www.tutorialspoint.com/log4j/log4j_logging_database.htm

或者您可以通过扩展已存在的librery(如Log4J)来创建自己的记录器 像这样的东西

public class MyLogger extends Logger {

    protected MyLogger(String name) {
        super(name);
    }

    @Override
    public void info(Object message) {
        super.info(message);
        db.save(message);
    }

}

答案 1 :(得分:1)

Spring Boot默认包含SLF4J:logging facade和Logback:SLF4J实现

因此在application.properties中,我们可以指定控制台或文件输出的属性

当您需要登录数据库时,您可以创建特定于Logback的文件,即logback.xml,并在其中指定所需的appender配置,Boot将选择该

http://dev.cs.ovgu.de/java/logback/manual/appenders.html

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

如果您想使用log4j,则必须排除默认日志记录并包含log4j

然后如下所示配置pom.xml,并根据log4j进行进一步配置

      <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter</artifactId>
     <exclusions>
       <exclusion>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-logging</artifactId>
       </exclusion>
     </exclusions>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-log4j2</artifactId>
     </dependency>

在log4j中创建Appender:

https://logging.apache.org/log4j/2.x/manual/appenders.html

http://howtodoinjava.com/log4j/how-to-create-logs-in-database-using-jdbcappender-in-log4j/