简体   繁体   English

在Spring Boot中记录Hibernate

[英]Logging Hibernate in spring boot

Please tell me. 请告诉我。 I have a project on Spring-boot. 我有一个关于Spring-boot的项目。 I'm trying to configure logging in the java code. 我正在尝试在Java代码中配置日志记录。 The problem is that I understand how to configure synchronous logging application and Hibernate SQL. 问题是我了解如何配置同步日志记录应用程序和Hibernate SQL。 Here my configuration class for logging app and its works fine: 在这里,我的日志记录应用程序的配置类及其工作正常:

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


}

I tried to make a separate class specifically for Hibernate. 我试图专门为Hibernate创建一个单独的类。 And write to another file. 并写入另一个文件。 The file is created but no information. 文件已创建,但没有信息。 I try user some thing like this in another class Logger log = logCtx.getLogger("org.hibernate.SQL"); 我在另一个类中尝试给用户类似的东西。Logger log = logCtx.getLogger(“ org.hibernate.SQL”);

UPDATE: 更新:

In the end what I want: I want to configure the logging of my application in java code. 最后,我想要的是:我想用Java代码配置应用程序的日志记录。 That is, the log should be written to the logs of the application and SQL queries. 即,该日志应写入应用程序和SQL查询的日志。 And

It was much easier than I expected. 这比我预期的容易得多。 Needed for Hibernate logger to specify the logging level and to create a logger to use the "org.hibernate" Hibernate记录器需要指定记录级别并创建一个记录器以使用“ org.hibernate”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM