Enable/Disable Log4j2 标记

Enable/Disable Log4j2 Marker

我在单体应用程序的不同子模块中使用名为 "SQL" 的 Log4j2 标记。 我想知道是否有办法 enable/disable 这个标记独立于记录器级别。

万一不可能,这意味着我必须在我的 log4j2.xml 配置文件中声明几个记录器条目(每个子模块一个),其级别与 enable/disable 相同.在这种情况下你有更好的方法吗?

您的问题没有多大意义,因为标记总是独立于日志记录级别启用或禁用。例如:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <MarkerFilter marker="SQL" onMatch="ACCEPT" onMismatch="DENY"/>
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log"
             filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
      <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <TimeBasedTriggeringPolicy />
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
 </Configuration>

将导致所有具有 SQL 标记的日志事件独立于其日志记录级别进行记录,因为它们在评估任何日志级别之前已被标记过滤器接受。将过滤器放在 appender、logger 或 appender 引用下将需要根据特定组件的规则评估这些点的日志记录级别。