java - 动态设置列值 JDBC Appender : Log4j2

标签 java logging configuration log4j2

我在 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 代码设置 literal(LOG_Batch) 的值。

Logger.debug("hello");

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

String log_batch="test";

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

最佳答案

PatternLayout 支持的任何模式都可以在列模式中使用,因此您可以将该值放入代码中的 ThreadContext 映射 (ThreadContext.put("log_batch", "test");) 中,然后通过使用 <Column name="LOG_Batch" pattern="%X{log_batch}" /> 配置附加程序将其插入数据库中.

关于java - 动态设置列值 JDBC Appender : Log4j2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554373/

相关文章:

java - 对一个类使用 Get 方法但不对另一个类使用 Get 方法时出现 NullPointEException

java - Log4J:备份文件名带有sysdate

c# - 如何检索程序集的限定类型名称?

java - Oracle java 没有出现在 SDKMAN 中?

java - 使用 Tomcat 进行 Windows 身份验证

java - 无法追踪为什么这个正则表达式代码无限运行

logging - MDC 不适用于 SLF4J

python - 将值插入日志消息的正确方法

configuration - 如何在 EMR 集群 Bootstrap 上设置 livy.server.session.timeout?

asp.net - 正确设置 IIS7.5 机器帐户以进行匿名网站访问