2016-09-13 2 views
0

SLF4J 및 Log4J2를 사용하여 로깅을 설정하려고하는 스프링 부트 응용 프로그램이 있습니다. log4j.configurationFile = C : \ log4j2.xmlslf4j with log4j2는 로그 파일을 생성하지만 쓰기는하지 않습니다.

다음

내가 log4j를 설정 파일을 정의 log4j2.component.properties의 내용이 파일을 여기에

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)); 
    } 
} 

는 응용 프로그램에서 미리보기입니다

<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> 

01 : 여기

는 log4j2.xml 파일이며

콘솔, 파일 및 롤링 파일에 대한 세 개의 appender 설정이 있습니다. 응용 프로그램을 실행할 때 콘솔에 로그가 표시되지만 구성에 정의 된 것과 같이 형식이 지정되어 있지 않습니다.

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

file.log 및 roll.log는 생성되었지만 로그 정보가 없습니다. 1.3.6

밖으로 figuing 어떤 도움을 내가 무엇을 잘못하고 있어요 크게 감상 할 수있다 : 여기

는 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' 
} 

봄 부트 버전에서 미리보기입니다. 미리 감사드립니다.

+0

어떻게 log4j.configurationFile 속성을 지정합니까? –

+0

내 VM 인수에 -Dlog4j.configurationFile = c : \\ log4j2.xml을 시도했습니다. 이것이 작동하지 않을 때 log4j2-test.properties 파일을 만들었습니다. – Girish

+0

'log4j2.xml' 파일을'srm/main/resources' 폴더에 넣고 확인해 주시겠습니까? – nurgasemetey

답변

0

표시된 구성 파일에는 </Loggers</Configuration > 태그가 없습니다. 이렇게하면 XML이 파싱되는 것을 방지 할 수 있으며 log4j는 오류 수준에서 콘솔에만 기록하는 기본 구성을 설치합니다.

구성 파일을 찾지 못하거나 제대로 처리하지 못하면 시스템 등록 정보 -Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE을 설정하여 log4j2 내부 상태 로깅을 계속 사용할 수 있습니다. 이것은 당신에게 잘못된 일이 무엇인지에 대한 통찰력을 줄 수 있습니다.

+0

이전의 대답이 잘못되었습니다 :'log4j.configurationFile' 속성 이름의 철자가 정확합니다. 사과. –

0

나는 그것이 작동하도록하는 방법을 알아 냈습니다. log4j2.xml 파일을 프로젝트/파일 시스템의 src/main/resources에 추가해야했습니다. 내 경우에 c : \ log4j2.xml

파일 중 하나가 누락 된 경우 로깅은 실패합니다. 작업. 도와 주셔서 감사합니다.

관련 문제