2017-09-26 1 views
1

quartz와 함께 spring 부트와 log4j2.properties를 사용하고 있습니다. 석영 작업과 관련된 로그가 인쇄되지 않습니다. 다른 모든 로그가 인쇄됩니다. 이 인쇄물을 얻기위한 특정 구성을 추가해야합니까?쿼츠가있는 스프링 부트에서 로그가 출력되지 않음 [log4j2 사용]

public class Scheduler { 
    private static Logger log = LogManager.getLogger(); 

    public static void main(String[] args) throws Exception { 
    //following getting printed 
     log.info("Scheduler is testing"); 
     SpringApplication.run(Scheduler.class, args); 

    } 

    @Scheduled(cron="*/2 * * * * *") 
    public void execute() { 
     //following not getting printed 
     log.info("Scheduler ...."); 
    } 
} 

cron의 로그가 인쇄되지 않습니다. 구성을 위해 log4j2.properties를 사용하고 있습니다. 속성 내가 사용하고 있습니다 :

#START 
name=PropertiesConfig 
#Folder location 
property.filename = /Users/folder 
#both console and file 
appenders = console, file 

rootLogger.level = debug 
rootLogger.appenderRefs = stdout 
rootLogger.appenderRef.stdout.ref = STDOUT 

appender.console.type = Console 
appender.console.name = STDOUT 
appender.console.layout.type = PatternLayout 
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

appender.file.type = File 
appender.file.name = LOGFILE 
appender.file.fileName=${filename}/gt.log 
appender.file.layout.type=PatternLayout 
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n 

loggers=file 
#Project package base 
logger.file.name=com.mypackage 
logger.file.level = debug 
logger.file.appenderRefs = file 
logger.file.appenderRef.file.ref = LOGFILE 
#END 
+1

'execute' 메서드가 실행되도록 하시겠습니까? 브레이크 포인트를 안에 넣고 IDE로 디버깅 해봤습니까? – pleft

+0

예. 로그 파일이 아닌 콘솔에 인쇄됩니다. – TomJava

답변

1

당신의 execute() 방법은 바로 호출되고 있는지 확인합니다. , 또한

@SpringBootApplication 
@EnableScheduling // Make sure this is present 
public class ScheduledTaskApplication { 
    private static final Logger log = LogManager.getLogger(); 

     public static void main(String[] args) { 
      log.info("Scheduler is testing"); 
      SpringApplication.run(ScheduledTaskApplication.class, args); 
    } 

    @Scheduled(cron="*/2 * * * * *") 
    public void execute() { 
     //following not getting printed 
     log.info("Scheduler ...."); 
    } 
} 

을 당신이이 logging.config 재산 application.properties 구성 있는지 확인하십시오 : 당신이 @Scheduled를 사용하는 경우, 예를 들어, 당신은 @EnableScheduling 주석이 있는지 확인

logging.config=classpath:log4j2.properties 

당신이 '돈 경우 이 작업을 수행하면 로커가 이상하게 작동하는 것 같습니다. main()의 메시지가 적절한 로거에 기록되기 때문에 나중에 rootLogger으로 변경되어 해당 클래스 내의 다른 모든 메시지가 발생합니다 (test() 콘솔에 기록됩니다).

+0

또한 존재합니다. 로그는 콘솔에 들어오고 파일에 기록되지 않습니다. – TomJava

+0

@TomJava 질문에 로깅 구성을 추가 할 수 있습니까? – g00glen00b

+0

님이 질문에 추가했습니다. – TomJava

관련 문제