2017-09-12 7 views
8

Log4j를 사용하여 파일 시스템의 로컬 로그 파일에 쓰려고합니다.스프링 부트 마이크로 서비스의 특정 로그 파일에 log4J이 쓰여지지 않음

실제로 다른 프로젝트의 정확한 속성 파일을 사용하고 내 앱 이름과 일치하도록 최상위 디렉토리의 이름을 변경했습니다. 다른 프로젝트는 logs.log 파일에 기록하지만 어떤 내용도 전혀 인쇄하지 않습니다. 두 프로젝트 모두 동일한 버전의 log4j를 사용합니다.

은 pom.xml 파일 내 유닉스 기반의 맥 OS에

<dependency> 
    <groupId>log4j</groupId> 
    <artifactId>log4j</artifactId> 
    <version>1.2.17</version> 
</dependency> 

, 나는의/var/로그에 cd'ed/다음과 같은 한 : 모든

sudo mkdir myapp 
chmod 777 myapp 

이 MyApp를 내부에 가지고, 다음 설치를 여기 저기 :

if (log.isDebugEnabled() { 
    log.debug("print something"); 
} 

MyApp를/SRC/메인/자원/log4j.properties :

log4j.rootCategory=DEBUG, RF 

log4j.category.your.category.name=DEBUG 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 

log4j.appender.stdout.layout.ConversionPattern=%-5p [%F]: %m [%d{ISO8601}]%n 
log4j.logger.com.amazonaws=DEBUG RF 

log4j.appender.RF=org.apache.log4j.RollingFileAppender 
log4j.appender.RF.File=/var/log/myapp/logs.log 

log4j.appender.RF.MaxFileSize=10MB 
log4j.appender.RF.MaxBackupIndex=30 
log4j.appender.RF.layout=org.apache.log4j.PatternLayout 
log4j.appender.RF.layout.ConversionPattern=[%d{ISO8601}]%5p%6.6r[%t]%x(%F:%L) - %m%n 
Threshold=DEBUG 

이유는 내부 이해하지 마십시오

/var/log/myapp/ 

더 logs.log 파일 존재 없습니다! 내가 사용 빌드 봄 부팅 1.5.4.RELEASE 내부에이를 사용하여

암 : 사용하여 실행 한 후

mvn clean install 

을 그리고 중 하나

java -jar myapp.jar 

또는

mvn spring-boot:run 

겠습니까 누군가가 나에게 더 나은 특성 파일을 제공 할 수 있는지 또는 내가 뭘 잘못하고 있는지 확인해 주시면 고맙겠습니다.

시간을내어 읽어 주셔서 감사합니다.

+2

log4j 로깅을 허용하려면 봄 부팅 로깅 (기본 로그백)을 제외해야합니다. [제외 방법] (https://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html#howto-configure-log4j-for-logging)을 참조하십시오. – Veeram

답변

3

@Veeram이 맞습니다 - 로그는 logback으로 인쇄됩니다.이 로그는 스프링 부트와 함께 제공됩니다. Log4j으로 교체해야합니다.

Spring Boot 1.4.0 Release Notes에서 :

Log4j의 1 지원이 제거 된 아파치 EOL 발표 다음 그러나 지금은 옵션이 아닙니다.

그래서 Log4j 2으로 업그레이드하는 것이 좋습니다.

P. 여전히 Log4j 1.2을 사용할 수 있다고 생각하지만,이 경우에는 spring-boot-starter-logging 모듈에서 제외되어야 할 종속성을 정의하고 지정해야합니다.이 파일은 대신 추가해야합니다. 귀하의 문제를 재현하기위한 데모 프로젝트를 설정했고 여기 빌드의 종속성 목록이 있습니다.Gradle을 (I가 Gradle을 사용하지만 난 당신이 포인트를 얻을 생각) :

dependencies { 
    compile('org.springframework.boot:spring-boot-starter') { 
     exclude group: 'ch.qos.logback' 
     exclude group: 'org.slf4j', module: 'log4j-over-slf4j' 
    } 
    compile('commons-logging:commons-logging:1.2') 
    compile('log4j:log4j:1.2.17') 
    compile('org.slf4j:slf4j-log4j12:1.7.25') 
    testCompile('org.springframework.boot:spring-boot-starter-test') 
} 
1

@mxf이 logback 이제 봄 부팅 내에서 기본 로깅 하위 시스템입니다 말했듯이.

다른 로거를 구성 할 수 있지만 실제로로 그인 전환 로거의 세계이므로 Logback을 사용하는 것이 좋습니다.