2017-06-26 212 views
0

請告訴我。我有一個Spring引導項目。我試圖在java代碼中配置日誌記錄。問題是我知道如何配置同步日誌記錄應用程序和Hibernate SQL。 這裏記錄應用程序及其工作正常我的配置類:在彈簧啓動時記錄休眠

@Service 
public class Slf4j { 

    @Bean(name = "logger") 
    public Logger getLogger() { 
     LoggerContext logCtx = (LoggerContext) LoggerFactory.getILoggerFactory(); 
     Logger log = logCtx.getLogger(Logger.ROOT_LOGGER_NAME); 
     log.setAdditive(false); 
     log.setLevel(Level.INFO); 
     log.addAppender(initConsoleLogger(logCtx)); 
     log.addAppender(initFileLogger(logCtx)); 
     return log; 
    } 

    private RollingFileAppender initFileLogger(LoggerContext logCtx) { 
     PatternLayoutEncoder logEncoder = new PatternLayoutEncoder(); 
     logEncoder.setContext(logCtx); 
     logEncoder.setPattern("%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n"); 
     logEncoder.start(); 

     RollingFileAppender logFileAppender = new RollingFileAppender(); 
     logFileAppender.setContext(logCtx); 
     logFileAppender.setName("logFile"); 
     logFileAppender.setEncoder(logEncoder); 
     logFileAppender.setAppend(true); 
     logFileAppender.setFile("logs/logfile.log"); 

     TimeBasedRollingPolicy logFilePolicy = new TimeBasedRollingPolicy(); 
     logFilePolicy.setContext(logCtx); 
     logFilePolicy.setParent(logFileAppender); 
     logFilePolicy.setFileNamePattern("logs/logfile-%d{yyyy-MM-dd_HH}.log"); 
     logFilePolicy.setMaxHistory(7); 
     logFilePolicy.start(); 

     logFileAppender.setRollingPolicy(logFilePolicy); 
     logFileAppender.start(); 
     return logFileAppender; 
    } 

    private ConsoleAppender initConsoleLogger(LoggerContext logCtx) { 
     PatternLayoutEncoder logEncoder = new PatternLayoutEncoder(); 
     logEncoder.setContext(logCtx); 
     logEncoder.setPattern("%-12date{YYYY-MM-dd HH:mm:ss.SSS} %-5level - %msg%n"); 
     logEncoder.start(); 

     ConsoleAppender logConsoleAppender = new ConsoleAppender(); 
     logConsoleAppender.setContext(logCtx); 
     logConsoleAppender.setName("console"); 
     logConsoleAppender.setEncoder(logEncoder); 
     logConsoleAppender.start(); 
     return logConsoleAppender; 
    } 


} 

我試圖讓一個單獨的類專門爲休眠。並寫入另一個文件。該文件已創建,但沒有信息。我在另一個類中嘗試用戶這樣的事情Logger log = logCtx.getLogger(「org.hibernate.SQL」);

UPDATE:

在我想要的結尾:我想我的配置在Java代碼中應用程序的日誌記錄。也就是說,應將日誌寫入應用程序和SQL查詢的日誌中。和

+0

有一個可以啓用的應用程序屬性鍵,以便hibernate記錄它生成的SQL查詢。它裏面有「顯示SQL」,但我不記得我的頭頂。 – EpicPandaForce

+0

@EpicPandaForce在這種情況下,我需要配置Hibernate而不使用application.properties –

回答

0

這比我想象的要容易得多。 Hibernate記錄器需要指定記錄級別並創建記錄器以使用「org.hibernate」