【问题标题】:Setting Column Value Dynamically JDBC Appender : Log4j2动态设置列值 JDBC Appender:Log4j2
【发布时间】:2014-08-24 14:48:30
【问题描述】:

我在 log4j2 xml 中配置了 JDBC appender

<JDBC name="databaseAppender" tableName="TL_FX_LOG">
  <ConnectionFactory class="org.apache.jmeter.protocol.java.test.ConnectionFactory" method="getDatabaseConnection" />
  <Column name="LOG_DATE" isEventTimestamp="true" />
   <Column name="LOG_DESC" pattern="%message" />
      <Column name="LOG_Batch" literal="someproperty" />

我需要从 Java 代码中设置字面量(LOG_Batch)的值。

Logger.debug("hello");

hello 将作为 %message 值传递。但是如果我有一个变量

String log_batch="test";

如何将 log_batch 变量值传递给 JDBC appender。

【问题讨论】:

    标签: java logging configuration log4j2


    【解决方案1】:

    PatternLayout 支持的任何模式都可以在列模式中使用,因此您可以将该值放在代码中的 ThreadContext 映射 (ThreadContext.put("log_batch", "test");) 中,并通过使用 &lt;Column name="LOG_Batch" pattern="%X{log_batch}" /&gt; 配置 appender 将其插入 DB。

    【讨论】:

    • 我遇到了类似的问题 (stackoverflow.com/questions/55905449/…),但级别更高。是否可以混合文字和模式?我需要为我的字段 POS &lt;Column name="POS" pattern="SELECT COALESCE(MAX(POS),-1)+1 FROM LAUFLOG WHERE SCHNITTSTELLE ='%X{schnittstelle}' AND VERSION = '%X{version}' AND LAUF = '%X{laufid}'"/&gt; 设置一个 select max + 1 当我更改为文字时,这也会给我一个错误
    猜你喜欢
    • 2020-07-03
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2011-11-03
    • 2012-08-23
    • 1970-01-01
    • 2017-12-31
    相关资源
    最近更新 更多