【问题标题】:JOOQ log with MDC使用 MDC 的 JOOQ 日志
【发布时间】:2020-12-14 22:10:07
【问题描述】:

我使用logback MDC来记录我的应用程序不同模块的日志,例如,

// 1. define a logger
org.slf4j.Logger mdclog = org.slf4j.LoggerFactory.getLogger("MY_LOGGER_NAME");

// record trade log
org.slf4j.MDC.put("MY_MDC_KEY", "trade_log");
mdclog.info("This is trade log");

// record goods log
org.slf4j.MDC.put("MY_MDC_KEY", "goods_log");
mdclog.info("This is goods log");

logback.xml 中的 mdc 配置

<appender name="log_classify" class="ch.qos.logback.classic.sift.SiftingAppender">
        <discriminator>
            <Key>login</Key> 
            <DefaultValue>OTHER</DefaultValue>
        </discriminator>
        <sift>
            <appender name="${MY_MDC_KEY}" class="ch.qos.logback.core.rolling.RollingFileAppender">
                <prudent>false</prudent>
                <file>${LOG_PATH}/${MY_MDC_KEY}.log</file>
                <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                    <fileNamePattern>${LOG_PATH}/${MY_MDC_KEY}_%d{yyyy-MM-dd}.log.zip</fileNamePattern>
                </rollingPolicy>
                <encoder>
                    <pattern>${FILE_LOG_PATTERN}</pattern>
                </encoder>
            </appender>
        </sift>
</appender>

这会生成两个日志文件,

我想在不同的日志文件中记录贸易或货物的sql日志, 所以我想知道 JOOQ 是否支持这个?

【问题讨论】:

    标签: jooq


    【解决方案1】:

    我找到了解决问题的方法。

    我将附加程序放入org.jooq.tools.LoggerListener

        <Logger name="org.jooq.tools.LoggerListener" level="DEBUG">
            <appender-ref ref="log_classify" />
        </Logger>
    

    初始化我的 MDC 后,jooq sql 执行日志将添加到不同的文件中。

    其实,我不知道这是不是个好主意

    【讨论】:

      【解决方案2】:

      jOOQ 没有将它与开箱即用的记录器深度集成,但您可以在运行 SQL 查询之前将 org.slf4j.MDC.put 调用放在 ExecuteListener 中,例如在 ExecuteListener::renderEnd 事件中,一旦 SQL生成语句,并对查询进行正则表达式匹配以做出决定。或者,使用VisitListener,您可以提前做出此决定,尝试匹配查询中可能存在的特定表。

      但很可能,初始化MDC 上下文的更好位置是在服务层,因为您的服务也可能知道您是否要运行“贸易”或“货物”查询。

      【讨论】:

      • 嗨,卢卡斯,感谢您的回答。我找到了解决我的问题的方法。我在问题的末尾添加它。但我不知道这是不是个好主意,
      • @einherjar:你可以自己回答问题
      猜你喜欢
      • 1970-01-01
      • 2019-01-31
      • 2022-12-15
      • 2014-09-27
      • 2021-12-22
      • 2012-03-24
      • 1970-01-01
      • 2021-06-26
      • 1970-01-01
      相关资源
      最近更新 更多