【问题标题】:Can micronaut log access logs with logback?micronaut 可以使用 logback 记录访问日志吗?
【发布时间】:2019-02-08 19:23:37
【问题描述】:

我正在尝试在 micronaut 中设置访问日志,但是,由于 logback-access 库使用 servlet 过滤器,我看不到直接的方法。 有不同的解决方案吗?一些隐藏的 Micronaut 配置或过滤器的可信赖适配器(用于 Servlet 过滤器的 Micronaut 过滤器包装器会很棒)

【问题讨论】:

  • Micronaut 不是 servlet,因此不能使用 servlet 过滤器。您正在寻找的功能确实是 Netty(底层 http 服务器)的功能,并且适用于任何使用 Netty for http 的库/框架
  • 我知道它不能按原样使用,但可能使用包装器,因为过滤器是接口。我不需要它通用,我需要它与 micronaut 一起使用,所以,可以使用 micronaut 过滤器,我只是不想自己编写过滤器。

标签: logback micronaut


【解决方案1】:

Micronaut http 服务器支持自动添加LoggingHandler,您必须在配置中提供micronaut.server.netty.logLevel: <<level>>,其中level 是TRACE、DEBUG、INFO、WARN、ERROR 之一。我不知道这是否会提供与 logback-access 相同的详细信息,但您可以尝试一下。

编辑:一定要配置一个记录器。例如在 logback 中:

<logger name="io.netty.handler.logging" level="TRACE"/>

【讨论】:

  • 是的,我在看那个:顺便说一句,我认为它是io.micronaut.http.server.netty,并且是零散的而不是完整的。
  • @leoconco 查看我的编辑 - 确保您已配置记录器
  • 我刚刚编写了自己的过滤器,并使用了自定义 Logger 名称,这更容易@james-kleeh
  • @JamesKleeh 这能看到出站请求/响应吗?
  • 我认为这个答案适用于 Micronaut 1,因为版本 2+ 有一些 configuration properties for Netty access logger
【解决方案2】:

我使用 mn CLI 创建我的应用程序(使用 groovy 作为我的开发语言),并且 mn 代码生成了一个简单的 logback.xml。从我第一次运行我的应用程序开始,日志记录就开始工作了。

这是生成的 OOTB:

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <withJansi>true</withJansi>
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

然后我去了logback主页,使用它的code generator将mn种子xml文件转换为logback.groovy。

这是我为 hello.world 包添加记录器后的结果。

// ----------------------------------------------------------
//
// Built on Sun Jul 07 02:41:38 CEST 2019 by logback-translator
// For more information on configuration files in Groovy
// please see http://logback.qos.ch/manual/groovy.html

// For assistance related to this tool or configuration files
// in general, please contact the logback user mailing list at
//    http://qos.ch/mailman/listinfo/logback-user

// For professional support please see
//   http://www.qos.ch/shop/products/professionalSupport
// ----------------------------------------------------------

import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import static ch.qos.logback.classic.Level.DEBUG

appender("STDOUT", ConsoleAppender) {
    withJansi = true
    encoder(PatternLayoutEncoder) {
        pattern = "%cyan(%d{HH:mm:ss.SSS}) %gray([%thread]) %highlight(%-5level) %magenta(%logger{36}) - %msg%n"
    }
}
root(INFO, ["STDOUT"])
logger("hello.world", DEBUG)

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 2014-10-25
    • 2015-01-09
    • 2017-05-06
    • 2017-01-31
    • 2013-04-27
    • 1970-01-01
    • 2016-01-14
    相关资源
    最近更新 更多