【问题标题】:How to put Spring Boot logging data into database? I want to put all INFO and ERROR messages to database如何将 Spring Boot 日志记录数据放入数据库?我想将所有 INFO 和 ERROR 消息放入数据库
【发布时间】:2017-05-05 10:39:59
【问题描述】:

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

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

【问题讨论】:

  • 请指定您使用的日志框架。对于 Log4j 和 Logback,有写入数据库的附加程序。这使得它只是一个配置问题。
  • 我将使用 Log4j2
  • 如何阅读documentation,它解释了如何配置基于 JDBC 的附加程序。 (开箱即用)。

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


【解决方案1】:

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

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

public class MyLogger extends Logger {

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

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

}

【讨论】:

  • 不,你不知道这只是一个例子而不是真正的实现。听着,除非有一些非常特殊的情况,否则创建自己的 Logger 是一种不好的做法(并且在数据库中保存日志并不特殊: ))。在您的情况下,最好使用 log4j 具有的特殊附加程序。我建议你在这里阅读一些关于如何使用日志的东西是简单的教程journaldev.com/7128/… 你可以从这里开始,然后走到我在答案中给你的链接。
【解决方案2】:

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

所以在 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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2020-04-10
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多