java Sping Boot 正在创建但未写入日志文件(Spring 2.7.2)

vc9ivgsu  于 2023-01-04  发布在  Java
关注(0)|答案(1)|浏览(212)

我正在把我的spring应用程序作为一个war文件部署到外部的tomcat上。在控制器类中,如果我访问/applogging,我会尝试把一些日志消息写到日志文件中
控制器类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.yaddayadda

@RestController
public class Controller {

    private static final Logger logger = LoggerFactory.getLogger(Controller.class);
    
    @GetMapping("/hello")
    public String helloWorld()
    {
        return("Hello World!");
    }

    @GetMapping("/applogging")
    public String doLogs() 
    {
        logger.error("Error message");
        logger.warn("Warning message");
        logger.info("Info message");
        logger.debug("Debug message");
        logger.trace("Trace message");
        return("Logging");
    }
}

主应用类

@SpringBootApplication
public class SpringappApplication extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(SpringappApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(SpringappApplication.class, args);
    }
}

application.properties

server.tomcat.accesslog.enabled=true
logging.level.root = TRACE
logging.file.name=/opt/tomcat/apache-tomcat-9.0.70/logs/webapplogs/springapp.log
logging.pattern.file= %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%
logging.level.org.springframework.web=TRACE
logging.level.org.hibernate=TRACE

日志创建在指定的位置,但没有任何消息写入日志文件。我是否使用了错误的属性,或者我在控制器类中做错了什么?

pwuypxnk

pwuypxnk1#

要添加到@M.代努姆的评论中...
日志记录在ApplicationContext创建之前被初始化。阅读更多here。因此,文件附加器在控制器类示例化之前被初始化,相关文件在控制器类示例化之前被创建。换句话说,日志记录初始化与控制器中日志记录器的使用无关。这就是创建日志文件的原因。

相关问题