我在整体应用程序的不同子模块中使用了一个称为“ SQL”的Log4j2标记。 我想知道是否有一种方法可以独立于记录器级别启用/禁用此标记。
如果不可能,这意味着我必须在我的log4j2.xml配置文件中声明几个记录器条目(每个子模块一个),并具有正确的级别来启用/禁用它。在这种情况下,您有更好的方法吗?
我在整体应用程序的不同子模块中使用了一个称为“ SQL”的Log4j2标记。 我想知道是否有一种方法可以独立于记录器级别启用/禁用此标记。
如果不可能,这意味着我必须在我的log4j2.xml配置文件中声明几个记录器条目(每个子模块一个),并具有正确的级别来启用/禁用它。在这种情况下,您有更好的方法吗?
您的问题没有多大意义,因为标记始终与记录级别无关地启用或禁用。例如:
<?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标记的日志事件,而与它们的日志记录级别无关,因为在评估任何日志级别之前,它们已被标记过滤器接受。将过滤器放置在附加程序,记录器或附加程序引用下将需要根据特定组件的规则评估这些点的日志记录级别。