2017-01-20 2 views
0

Я обновляю свою систему ведения журнала от log4j до log4j2. Я последовал за шагами от апачей-парней here.Проект Spring-Boot log4j для преобразования log4j2 Выпуск

  1. Я изменил мой log4j.xml к новым стандартам (особенно для Appenders)
  2. Модернизированный мой Gradle файл новых зависимостей
  3. пересобрал весна-загрузки упаковщика проект и развернуть его

Я использую эти свойства системы при развертывании моей баночки:


Java Dspring.profiles.active = DEV -Dlog4j.configurationFile = log4j2.xml -jar application.jar


Однако мое приложение продолжает работать log4j и не log4j2. При установке свойства отладки Dlog4j.debug я могу видеть, что log4j пытается найти XML, свойства и т.д., а затем говорит

No appenders could be found for logger. See http://logging.apache.org/log4j/1.2/faq.

Так где я собирание версии 1.2?

Единственная причина, я считаю, log4j2 работает, когда я изменить название log4j2.xml к log4j.xml, я получаю предупреждение log4j о том, log4j2.xml could not be found. Only displying error messages to the console. Даже если log4j выплевывает сообщения вместе с этим.

Кто-нибудь сталкивается с чем-то подобным при переключении с log4j и log4j2 и может оказать некоторую помощь?

+0

Как ваша зависимость в Gradle выглядеть? Теперь есть один стартер для Log4j2 ('spring-boot-starter-log4j2'), и« потенциально »вы, возможно, также должны исключить' spring-boot-startter-logging' (в зависимости от других зависимостей, конечно). –

+0

Да, у меня есть 'spring-boot-starter-log4j2' и исключены' spring-boot-startter-logging' У меня также есть 'org.apache.logging.log4j log4j-api' – DevelopingDeveloper

ответ

2

Это для Gradle 3.2.1 и Spring Boot 1.4.2.

  1. Вы должны импортировать spring-boot-starter-log4j2 и исключить spring-boot-starter-logging
  2. Переименование log4j.xml в log4j2.xml и изменить его соответствующим образом (я думаю, что вы уже сделали это)
  3. Либо копировать/включить файл log4j2.xml внутри src/main/resources или передать его используя в -Dlogging.config (а не log4j.configurationFile, как вы используете, так как это весна загрузки приложений)

В конце концов, ваш G Radle конфигурационный файл должен выглядеть (отрывок):

buildscript { 
    repositories { 
    mavenLocal() 
    } 

    dependencies { 
    classpath('io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE') 
    classpath('org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE') 
    } 
} 

plugins { 
    // ... 
} 

//apply from: 'gradle/database.gradle' 

apply plugin: 'idea' 
apply plugin: 'io.spring.dependency-management' 
apply plugin: 'java' 
apply plugin: 'org.springframework.boot' 

repositories { 
    mavenCentral() 
    jcenter() 
} 

configurations { 
    all*.exclude module: 'spring-boot-starter-logging' 
    //all*.exclude module: 'jboss-logging-annotations' 
    //all*.exclude module: 'jboss-logging' 
} 

dependencyManagement { 
    imports { 
    mavenBom("org.springframework.boot:spring-boot-dependencies:1.4.2.RELEASE") 
    } 
} 

dependencies { 
    compile 'com.lmax:disruptor:3.3.5' 
    compile 'org.springframework.boot:spring-boot-starter-actuator' 
    compile 'org.springframework.boot:spring-boot-starter-log4j2' 
    compile 'org.springframework.boot:spring-boot-starter-undertow' 
    compile 'org.springframework:spring-webmvc' 
} 

task wrapper(type: Wrapper) { 
    gradleVersion '3.2.1' 
} 

... ваш Log4j 2.x конфигурационного файл должен выглядеть следующим образом (это только имеет Appender, регистрирующую в консоль и DEBUG уровня только «активированная "для этого пространства имен/пакета io.shido):

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Properties> 
    <Property name="log-pattern">%d{MM-dd-yyyy HH:mm:ss.SSS} |- %highlight{%5p}{TRACE=blue, DEBUG=green, INFO=green, WARN=yellow, ERROR=red, FATAL=red} in %style{%C{1}:%L}{cyan} [%style{%t#${sys:PID}}{magenta}] - %m%n</Property> 
    </Properties> 

    <Appenders> 
    <Console name="Console" target="SYSTEM_OUT" follow="true"> 
     <PatternLayout pattern="${log-pattern}" /> 
    </Console> 
    </Appenders> 

    <!-- Logger levels: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> 
    <Loggers> 
    <AsyncLogger name="io.shido" level="DEBUG" additivity="false" includeLocation="true"> 
     <AppenderRef ref="Console" /> 
    </AsyncLogger> 

    <Root level="WARN"> 
     <AppenderRef ref="Console" /> 
    </Root> 
    </Loggers> 
</Configuration> 

...и если вы не имеете log4j2.xml файл внутри src/main/resources так будет выбраны по умолчанию, или если вам нужно указать другой, используйте --logging.config директиву:

$ ./gradlew bootRun -Dspring.profiles.active=default -Dfile.encoding=UTF-8 -Dlogging.config assets/log4j2.xml 
+0

Мой log4j2.xml находится в' src/main/resources', когда я использую команду '-Dlogging.config = log4j2.xml', я получаю' Систему регистрации не удалось инициализировать с помощью конфигурации из 'src/main/resources/log4j2.xml' из FileNotFoundException. Я даже попытался использовать '-Dlogging.config', чтобы прояснить путь, и он все еще не смог найти файл. – DevelopingDeveloper

+0

. Должен ли вывод log4j для конфигурации log4j2 быть« log4j: asdfasdfasf' или 'log4j2: asdfasdfasdf'? – DevelopingDeveloper

+0

Не используйте теперь директиву '-Dlogging.config', поместите файл в' src/main/resources' и посмотрите, что происходит, затем попробуйте настроить (aka «make it work») его с помощью '-Dlogging .config' –

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