我正在使用Jetty的logback-access。除了对图像的http请求(*.jpg
,*.gif
)进行记录之外,它工作正常。大多数应用服务器会抑制这些日志记录,因为它们会使日志膨胀。
当我使用旧的Jetty NCSARequestLog
对象时,有一个setIgnorePaths()
方法有效,但是logback RequestLogImpl
没有类似的方法。
我很确定在logback-access.xml
中有一种方法可以使用某种过滤器。有没有人有合适的语法?
答案 0 :(得分:5)
logback-access具有ch.qos.logback.access.net.URLEvaluator
,可代替Janino使用内联脚本:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator class="ch.qos.logback.access.net.URLEvaluator">
<URL>.jpg</URL>
<URL>.gif</URL>
<URL>https://example.com/static/</URL>
<URL>/ops/</URL>
<URL>/management/</URL>
<URL>/monitoring</URL>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
...
在URLEvaluator
内,contains()
使得匹配可以发生在url的任何部分。
恕我直言,最好避免使用Janino库
答案 1 :(得分:3)
这是一个简单的EvaluatorFilter
配置,在你的appender中复制:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator>
<expression>
return formattedMessage.contains(".jpg") ||
formattedMessage.contains(".gif");
</expression>
</evaluator>
<onMatch>DENY</onMatch>
</filter>
...
也许您应该自定义表达式,因为.gif
和.jpg
也可能出现在其他日志消息中。
EvaluatorFilter
需要以下依赖项。如果您不使用Maven,请将其放到pom.xml
或添加到类路径中:
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>2.5.16</version>
</dependency>