2016-09-13 3 views
0

У меня есть приложение Spring Boot, которое я пытаюсь настроить для ведения журнала с использованием SLF4J и Log4J2.slf4j с log4j2 создает файлы журнала, но не пишет ему

Вот отрывок из приложения

package hello; 
import java.util.concurrent.atomic.AtomicLong; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 

@RestController 
public class GreetingController implements IGreetingService { 
    // private Logger logger = LogManager.getLogger(GreetingController.class.getName()); 
    private Logger logger = LoggerFactory.getLogger(GreetingController.class.getName()); 
    private static final String template = "Hello, %s!"; 
    private final AtomicLong counter = new AtomicLong(); 

    @Override 
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) { 
    logger.error("greeting called"); 
    return new Greeting(counter.incrementAndGet(), String.format(template, name)); 
    } 
} 

Вот содержимое log4j2.component.properties файл, в котором я определяю файл log4j конфигурации: log4j.configurationFile = C: \ log4j2.xml

Вот файл log4j2.xml:

<Configuration> 
    <properties> 
     <property name="path">logs</property> 
    </properties> 
<Appenders> 
    <Console name="consoleAppender" target="SYSTEM_OUT"> 
    <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss} %msg"/> 
    </Console> 
    <File name="myfileAppender" fileName="${path}/file.log" immediateFlush="true" append="true"> 
     <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
     <RollingFile name="rollingAppender" 
     fileName="c:\\roll.log" 
     filePattern="c:\\roll.log\\$${date:yyyy-MM}\\app-%d{MM-dd-yyyy}-%i.log"> 
      <PatternLayout> 
       <pattern>%d %p %C{1.} [%t] %m%n</pattern> 
      </PatternLayout> 
      <Policies> 
       <OnStartupTriggeringPolicy /> 
       <TimeBasedTriggeringPolicy interval="6" modulate="true"/> 
       <SizeBasedTriggeringPolicy size="250 MB"/> 
      </Policies> 
     </RollingFile>  
    </Appenders> 
<Loggers> 
<Logger name="hello" level="error"> 
    <AppenderRef ref="consoleAppender"/> 
    <AppenderRef ref="myfileAppender"/> 
</Logger> 
<Root level="error"> 
    <AppenderRef ref="consoleAppender"/> 
    <AppenderRef ref="myfileAppender"/> 
    <AppenderRef ref="rollingAppender"/> 
</Root> 

У меня есть три установки appenders для консоли, файл и скользящий файл. Когда я запускаю свое приложение, я вижу журналы в консоли, но они не отформатированы, как я определил в конфигурации.

2016-09-13 12:41:09.569 ERROR 9892 --- [nio-8888-exec-6] h.GreetingController      : greeting called 

Созданы файл.log и roll.log, но в них нет информации журнала.

Вот отрывок из build.gradle

configurations { 
    compile.exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging' 
    compile.exclude group: 'commons-logging' 
} 

dependencies { 
    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-web') 
    compile(group: 'org.springframework.boot', name: 'spring-boot-starter-log4j2') 
    compile(group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka-server') 
    compile group: 'com.netflix.eureka',  name: 'eureka-client', version: '1.4.10' 
    compile group: 'com.sun.jersey',   name: 'jersey-server', version: '1.19.1' 
    compile group: 'com.sun.jersey',   name: 'jersey-core', version: '1.19.1' 
    compile group: 'com.sun.jersey',   name: 'jersey-servlet', version: '1.19.1' 
} 

Spring версия загрузки: 1.3.6

Любая помощь figuing, что я делаю неправильно было бы весьма признателен. Заранее спасибо.

+0

Как вы определяете свойство log4j.configurationFile? –

+0

Я пробовал -Dlog4j.configurationFile = c: \\ log4j2.xml в моих аргументах VM. Когда это не сработало, я создал файл log4j2-test.properties – Girish

+0

Не могли бы вы поместить свой файл 'log4j2.xml' в папку' srm/main/resources' и проверить его? – nurgasemetey

ответ

0

Файл конфигурации, как показано, не имеет закрытия </Loggers и </Configuration > теги. Это может помешать анализу XML, и log4j установит конфигурацию по умолчанию, которая только регистрируется на консоли на уровне ошибки.

Если файл конфигурации не найден или обработан правильно, вы все равно можете включить log4j2 для внутреннего ведения журнала, установив системное свойство -Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE. Это может дать вам понять, что происходит не так.

+0

Мой предыдущий ответ был неправильным: имя свойства log4j.configurationFile' правильно задано в вопросе. Извиняюсь. –

0

Я понял, как заставить его работать. Мне нужно было добавить файл log4j2.xml как для src/main/resources в моем проекте, так и в файловой системе, в моем случае c: \ log4j2.xml

Если один из файлов отсутствует, то регистрация не Работа. Спасибо за вашу помощь.

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

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