【发布时间】:2020-07-18 11:22:52
【问题描述】:
我有一个使用 Lombok 的内置 @Slf4j 记录日志的 maven 项目。目前我的日志在控制台中可见,如下所示
06-Apr-2020 17:42:38.217 INFO [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[2020-04-06 05:42:40,701] Artifact Tarkshala-Scholars-Engine:war exploded: Artifact is deployed successfully
[2020-04-06 05:42:40,701] Artifact Tarkshala-Scholars-Engine:war exploded: Deploy took 4,521 milliseconds
[http-nio-8080-exec-1] INFO com.tarkshala.scholars.engine.webservices.AuthenticationService - Welcome to Tarkshala Scholar APIs
[http-nio-8080-exec-3] INFO com.tarkshala.scholars.engine.webservices.AuthenticationService - Welcome to Tarkshala Scholar APIs
06-Apr-2020 17:42:45.808 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/Users/kuldeep/Work/apps/apache-tomcat-9/webapps/manager]
06-Apr-2020 17:42:45.843 INFO [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/Users/kuldeep/Work/apps/apache-tomcat-9/webapps/manager] has finished in [35] ms
中间的一对线是slf4j记录的。
resources/log4j.properties 如下所示
# Root logger option
log4j.rootLogger=DEBUG, stdout, file
# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/Users/kuldeep/Work/repos/Tarkshala-Scholars-APIs/logs/application.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
pom.xml 如下所示:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
Java 类如下所示:
@Slf4j
@Path("/authentication")
@Authorization
public class AuthenticationService extends SpringApplication {
@Path("/greet")
@GET
@Produces(MediaType.TEXT_PLAIN)
@PubliclyAllowed
public Response greet(){
log.info("Welcome to Tarkshala Scholar APIs");
return getBean(AuthenticationServiceHandler.class).greet();
}
}
我有几个问题:
- 语句格式,它应该在方括号[]中包含时间。
- 日志没有添加到配置中给出的文件中,事实上我相信配置不是从文件中挑选出来的。
不知道我到底错过了什么。任何帮助/提示表示赞赏。
【问题讨论】:
-
你能添加你的主类吗?
-
这是一个 web 应用,集合了 jersey restful api。所以我真的无法理解你的问题。
-
因为查看应用程序的配置方式很有用。你应该有这样一行 "PropertyConfigurator.configure("path_to_my_log4j_properties");"
-
@StefanoCurcio webapps 在 servlet 中没有 Main 类。事实上,主类位于 webserver/servlet-container 更深处的某个地方(就像我的例子中的 tomcat)。是的,有一个名为 Application 的类,它可以被视为 servlet 的网关或将在部署 servlet 时调用的类。希望对您有所帮助。