如何抑制 logback-access 中某些请求的日志记录?

发布于 2024-12-04 11:33:22 字数 352 浏览 0 评论 0原文

我正在使用 Jetty 的 logback-access 。它工作正常,除了图像(*.jpg*.gif)的http请求被记录。大多数应用程序服务器都会抑制这些日志记录,因为它们会导致日志膨胀。

当我使用旧的 Jetty NCSARequestLog 对象时,有一个 setIgnorePaths() 方法可以工作,但 logback RequestLogImpl 没有类似的方法。

我很确定在 logback-access.xml 中有一种方法可以做到这一点,也许使用某种过滤器。有人有合适的语法吗?

I'm using logback-access with Jetty. It's working fine, except that http requests for images (*.jpg, *.gif) are getting logged. Most app servers suppress these log records because they bloat the logs.

When I was using the old Jetty NCSARequestLog object, there was a setIgnorePaths() method that worked, but the logback RequestLogImpl doesn't have a similar method.

I'm pretty sure there's a way to do it in logback-access.xml, perhaps using some kind of filter. Does anyone have the appropriate syntax?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹤仙姿 2024-12-11 11:33:22

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 库

logback-access has ch.qos.logback.access.net.URLEvaluator that can be used instead of inline scripts with 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>
   ...

Inside the URLEvaluator makes contains() so the matching can happens on any part of url.

IMHO it's better to avoid to use the Janino library

掩于岁月 2024-12-11 11:33:22

这是一个简单的 EvaluatorFilter 配置,复制到您的附加程序中:

<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 需要以下依赖项。将其放入您的 pom.xml 中,或者如果您不使用 Maven,则添加到您的类路径中:

<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>2.5.16</version>
</dependency>

更多 EvaluatorFilter 文档

Here is a simple EvaluatorFilter configuration, copy inside your 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>
    ...

Maybe you should customize the expression, since .gif and .jpg could occur in other log messages too.

EvaluatorFilter needs the following dependency. Put it to your pom.xml or add to your classpath if you don't use Maven:

<dependency>
    <groupId>org.codehaus.janino</groupId>
    <artifactId>janino</artifactId>
    <version>2.5.16</version>
</dependency>

Further EvaluatorFilter documentation

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文