2016-02-25 5 views
11

В настоящее время весной загрузки 1.3 мы можем только регистрировать журнал доступа к файлу в файловой системе. Есть ли способ использовать пользовательский регистратор (например, log4j2) для регистрации журнала доступа?Как использовать пользовательский логгер для регистрации журнала входа в весеннюю загрузку

В настоящее время я использую платформу с пружинным ботинком, но после проверки исходного исходного кода весны загрузочный лог инициализируется DefaultAccessLogReceiver, который записывает в файл. Я хотел бы использовать AccessLogHandler, если это возможно, и не записывать веб-фильтр, который регистрирует доступ.

Есть ли простой способ обойти это? (за исключением написания запроса на растяжение)

ответ

5

Трюк для такого рода жестко закодированных, следовательно, не поддающихся настройке проблем заключается в том, чтобы скрыть класс, чтобы выпустить новый с тем же пакетом и именем. Все, что вам нужно сделать, это предоставить log4j на основе DefaultAccessLogReceiver и убедиться, что это может быть поиск загрузчиком классов до того, как он находится в библиотеке подносов.

package io.undertow.server.handlers.accesslog; 

public class DefaultAccessLogReceiver implements AccessLogReceiver { 

    public void logMessage(final String message) { 
     // TODO: log with log4j 
    } 
} 
+0

Это интересная идея, никогда не думал об этой идее. – Rowanto

0

Весенняя загрузка не имеет обязательной регистрации, за исключением API регистрации общих прав, из которых существует множество вариантов реализации. Чтобы использовать Logback, вам нужно включить его и некоторые привязки для ведения общедоступных записей в пути к классам. Самый простой способ сделать это - с помощью стартовых попов, которые все зависят от регистрации весеннего ботинка-стартера. Для веб-приложения вам понадобится только Spring-boot-starter-web, так как он зависит транзитно от стартера регистрации. Например, с помощью Maven:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 

Spring Загрузочный имеет LoggingSystem абстракция, которая пытается настроить ведение журнала на основе содержимого классам. Если Logback доступен, это первый выбор.

Spring Boot также поддерживает Log4j или Log4j 2 для регистрации конфигурации, но только если один из них находится в пути к классам. Если вы используете стартовые посты для сборки зависимостей, это означает, что вам нужно исключить Logback, а затем включить выбранную вами версию Log4j. Если вы не используете стартовые помпы, вам необходимо предоставить общедоступную информацию (по крайней мере) в дополнение к выбранной вами версии Log4j.

Простейший путь, вероятно, через стартовые поры, хотя для этого требуется некоторое смещение с исключением, например. в Maven:

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-logging</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-log4j</artifactId> 
</dependency> 

Чтобы использовать Log4j 2, просто зависит от пружинного загрузки стартер-log4j2, а не пружинного загрузки стартер-log4j.

+1

Я знаю это. Но он не позволяет вам регистрировать журнал доступа к консоли. И измените его настройку. В журнале доступа используется собственный регистратор. – Rowanto

+0

Можете ли вы привести пример из своего приложения, что вы точно хотите сделать. В нашем приложении мы видим журналы на консоли. – AGdev

 Смежные вопросы

  • Нет связанных вопросов^_^