Используйте два регистратора, которые регистрируют два отдельных файла в разных форматах

У меня есть приложение Spring, которое использует logback-classic для входа в файл. У меня есть механизмы оповещения, которые смотрят на текущие журналы для различных вещей. Я хочу обновить свое приложение до Steno. Для этого я пытаюсь использовать logback-steno. У меня есть файл logback.xml в моем проекте, который выглядит примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>${catalina.base}/logs/app.log</file>
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="com.groupon.users.LogLayout" />
        </encoder>
    </appender>

    <logger name="com.amir.users" level="DEBUG"/>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <queueSize>20000</queueSize>
        <discardingThreshold>0</discardingThreshold>
        <appender-ref ref="FILE" />
    </appender>

    <root level="INFO">
        <appender-ref ref="ASYNC" />
    </root>
</configuration>

Регистрация в фильтре выглядит примерно так:

public class RequestTransactionFilter implements Filter {
    private Logger logger;

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        logger = LoggerFactory.getLogger(RequestTransactionFilter.class);
enter code here
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        logger.info("Started");
        chain.doFilter(request, response);
        logger.info("Completed");
    }

    @Override
    public void destroy() {}

    public void setLogger(Logger logger) {
        this.logger = logger;
    }
}

Я хочу быть в состоянии сделать что-то вроде этого:

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        logger = LoggerFactory.getLogger(RequestTransactionFilter.class);
        steno_logger = com.arpnetworking.steno.LoggerFactory.getLogger(RequestTransactionStenoFilter.class);
    }

Это возможно? Будет ли slf4j поддерживать такую ​​конфигурацию? Я новичок во всем этом, поэтому, если мой вопрос глуп, я заранее прошу прощения.

0 ответов

Другие вопросы по тегам