Может ли micronaut регистрировать журналы доступа с помощью logback?

Я пытаюсь настроить журналы доступа в micronaut, но, поскольку библиотека доступа к журналам использует фильтр сервлета, я не вижу прямого способа сделать это. Есть ли другое решение? Некоторая скрытая конфигурация Micronaut или надежный адаптер фильтра (оболочка Micronaut Filter для фильтров Servlet была бы отличной)


person leoconco    schedule 08.02.2019    source источник
comment
Micronaut не является сервлетом, поэтому фильтры сервлетов использовать нельзя. Функция, которую вы ищете, действительно является функцией Netty (базового http-сервера) и применима к любой библиотеке/фреймворку, использующему Netty для http.   -  person James Kleeh    schedule 09.02.2019
comment
Я знаю, что его нельзя использовать как есть, но, возможно, с оберткой, так как фильтры — это интерфейсы. Мне не нужен он общий, мне нужно его использовать с микронавтом, поэтому можно использовать фильтры микронавта, я просто не хотел писать фильтр сам.   -  person leoconco    schedule 11.02.2019


Ответы (2)


http-сервер Micronaut поддерживает автоматическое добавление LoggingHandler, вы должны указать micronaut.server.netty.logLevel: <<level>> в своей конфигурации, где level — это TRACE, DEBUG, INFO, WARN, ERROR. Я не знаю, предоставит ли это ту же информацию, что и logback-access, но вы можете попробовать.

РЕДАКТИРОВАТЬ: Обязательно настройте регистратор. Например, в журнале:

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

person James Kleeh    schedule 09.02.2019
comment
Да, я смотрел на это: кстати, я думаю, что это io.micronaut.http.server.netty, фрагментировано и не завершено. - person leoconco; 11.02.2019
comment
@leoconco Посмотрите мое редактирование - убедитесь, что у вас настроен регистратор - person James Kleeh; 12.02.2019
comment
Я просто написал свой собственный фильтр и использовал собственное имя регистратора, это намного проще @james-kleeh - person leoconco; 20.02.2019
comment
@JamesKleeh может ли он видеть исходящий запрос/ответ? - person Bobby; 16.07.2019

Я использовал 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>

Затем я перешел на домашнюю страницу журнала и использовал его генератор кода, чтобы преобразовать начальное число 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)

person Bob Makowski    schedule 07.07.2019