尝试在logback中使用评估程序JaninoEventEvaluator。但根据条件不能过滤掉。
我的logback.xml配置如下。
<appender name="durgaDlyFileSQL" class="ch.qos.logback.core.FileAppender">
<File>${durga.log.file.name.SQL}</File>
<encoder>
<pattern>${ScreenConversionPattern}</pattern>
</encoder>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator name="loggingTaskEval" class="ch.qos.logback.classic.boolex.JaninoEventEvaluator">
<expression>
System.out.println("MDC: " + mdc + " " + mdc.get("screenName"));
String screen = (String) mdc.get("screenName");
if ((screen == null) ||
screen.equals("Server Type Entry/Amend/Cancel")) {
return false;
}
</expression>
</evaluator>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${durga.log.file.name.SQL}.%d{${finch.log.file.DefaultRolloverFrequency}}</fileNamePattern>
</rollingPolicy>
</appender>
和日志的输出:
[2016年3月17日13:42:18.437] [服务器类型输入/修改/取消] [durga_admin] TRACE o.h.type.descriptor.sql.BasicBinder 83绑定参数[3] as [VARCHAR] - durga_admin [2016年3月17日13:42:18.438] [服务器类型输入/修改/取消] [durga_admin] TRACE ohtype.descriptor.sql.BasicBinder 83绑定参数[4]为[TIMESTAMP] - 2016-03-17 08:16 :23.0 [2016年3月17日13:42:18.439] [服务器类型输入/修改/取消] [durga_admin] TRACE ohtype.descriptor.sql.BasicBinder 83绑定参数[5]为[TIMESTAMP] - 2016-03-17 08:16 :23.0 [2016年3月17日13:42:18.440] [服务器类型输入/修改/取消] [durga_admin] TRACE o.h.type.descriptor.sql.BasicBinder 83绑定参数[6] as [VARCHAR] - durga_admin [2016年3月17日13:42:18.441] [服务器类型输入/修改/取消] [durga_admin] TRACE o.h.type.descriptor.sql.BasicBinder 83绑定参数[7]为[INTEGER] - 0
当screenName =“服务器类型输入/修改/取消”
时,我不想要日志我正在使用janino 2.5.10和logback 1.1.7并且所有内容都在tomcat 7.0.47上运行
答案 0 :(得分:1)
JaninoEventEvaluator需要一个从所有条件分支返回值的表达式。否则会抱怨说:org.codehaus.commons.compiler.CompileException: Method must return a value
如果条件不匹配,您可以将表达式更改为最后返回true。
查看此处的示例:https://logback.qos.ch/manual/filters.html#JaninoEventEvaluator