当前位置: 首页 > 知识库问答 >
问题:

用日志返回记录到数据库

龚德本
2023-03-14

使用log4j,我曾经有一个appender,它直接记录到数据库中的一个表。追加人如下:

 <appender name="DATABASE_LOG" class="org.apache.log4j.jdbc.JDBCAppender">
        <param name="URL" value="jdbc:postgresql://localhost/registrationdb" />
        <param name="Driver" value="org.postgresql.Driver"/>
        <param name="User" value="postgres"/>
        <param name="Password" value="********/>
        <layout class="org.apache.log4j.EnhancedPatternLayout">
            <param name="ConversionPattern" value="INSERT INTO user (user_id,creation_datetime,comment,user_type) VALUES ('%X{userId}','%d{yyyy-MM-dd HH:mm:ss}','%X{comment}','%X{userType}')"/>
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="INFO" />
        </filter>
  </appender>

这三个表是logging_event、logging_event_property和logging_event_exception。它们必须存在才能使用DBAppender。

根据我的理解,这意味着我绑定到这3个表以记录到数据库。

在internet上搜索解决方案时,涉及扩展appenderbase类的结果很少,这在现阶段对我来说不方便,因为这意味着必须进行更多的测试,因为我们知道有大量其他需求要测试。问题是:我可以定义一个与上面的log4j appender功能相似的LogBack appender吗?

非常感谢你的帮助。

共有1个答案

郭思淼
2023-03-14

是的,登录需要3个数据库表,您不能跳过其中任何一个 ,您只能自定义它们的名称 。这实际上是一个优点,Log4J根本不记录异常,而Logback使用一个单独的表作为堆栈跟踪行。它还记录mdc属性(第三个表)。

如果希望自定义表和/或列名,可以实现DBNameResolver

 类似资料:
  • 我目前正在一个系统中工作,那里有多个laravel项目,利用空间日志进行activity日志记录。我想知道在一个地方(数据库)获取所有这些日志的最佳方法。我还想知道是否可以将空间日志存储在多个数据库中?

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一

  • logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用

  • 我试图在一个基于spring的项目中创建记录器策略。 我面临的问题与滚动政策有关。已创建logfile.log并且工作正常,但未创建滚动文件rollingfile.log.%d{yyyy-MM-dd}.log。

  • 问题内容: 我需要将对项目中的Oracle数据库的所有查询记录到日志文件中。 有什么 好的 解决方案来实现这一目标?一些示例用法将不胜感激。 我已经用jdbcdslog查看了SLF4J,但不确定如何使用它登录到文件。而且,我需要“过滤”一些日志(因为我不需要知道何时调用某种方法) 最好是,我更愿意使用,但这不是必需的。 谢谢。 更新 我找到了这篇Oracle文章,但是它并没有真正告诉您如何以编程方