我正在把我的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
日志创建在指定的位置,但没有任何消息写入日志文件。我是否使用了错误的属性,或者我在控制器类中做错了什么?
1条答案
按热度按时间pwuypxnk1#
要添加到@M.代努姆的评论中...
日志记录在
ApplicationContext
创建之前被初始化。阅读更多here。因此,文件附加器在控制器类示例化之前被初始化,相关文件在控制器类示例化之前被创建。换句话说,日志记录初始化与控制器中日志记录器的使用无关。这就是创建日志文件的原因。