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 引用下将需要根据特定组件的规则评估这些点的日志记录级别。
我在单体应用程序的不同子模块中使用名为 "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 引用下将需要根据特定组件的规则评估这些点的日志记录级别。