为什么我的 Log4j 日志记录没有显示到控制台?
Why is my Log4j logging not displaying to the console?
我在 Eclipse/STS 中使用 Spring MVC 和 Maven 构建了一个网络应用程序。
我想添加日志记录,所以我像这样将 SLF4 和 Log4J 添加到 pom.xml..
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
我在 project/src/main/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
我在我的主 WebController 中创建了一个 Logger class,就像这样...
private static Logger logger = LoggerFactory.getLogger(WebController.class);
在我的 "showMain" 方法中,我正在做一些日志记录,比如这样...
@RequestMapping(value={"", "/", "showhome"}, method={RequestMethod.POST,RequestMethod.GET})
public ModelAndView showHome(Model model) {
logger.info("########### TEST LOG INFO");
logger.error("########### TEST LOG ERROR");
logger.warn("########### TEST LOG WARN");
logger.debug("########### TEST LOG DEBUG");
/* ... */
}
但是当我 运行 应用程序时,我没有在控制台中看到任何日志输出。
我在控制台输出中也没有看到任何表明它正在使用日志框架的信息。而且没有 "can't find log4j.properties" 消息或任何东西。
我尝试将 log4j.properties 放在项目的不同位置,但没有。
我一定是漏掉了一些简单的东西?我错过了什么?
您说您在 pom.xml 中添加了 log4j,但我没有看到它,您确定这是 pom.xml 的最新版本吗?
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
您的 pom.xml 缺少日志记录引擎,您可以使用 log4j2。
请考虑使用最新版本的 log4j2 而不是 log4j (1.2.x) 因为你可以提前:
- 惰性日志:log4j(1.2.x) 如果级别未激活,也会构建一个字符串
- lambda 以避免评估昂贵的方法
- 现代平台的大量附加程序
- 配置大量参数的更简单方法(重新加载配置、附加程序……)
pom.xml
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
</dependencies>
我在 Eclipse/STS 中使用 Spring MVC 和 Maven 构建了一个网络应用程序。
我想添加日志记录,所以我像这样将 SLF4 和 Log4J 添加到 pom.xml..
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
我在 project/src/main/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
我在我的主 WebController 中创建了一个 Logger class,就像这样...
private static Logger logger = LoggerFactory.getLogger(WebController.class);
在我的 "showMain" 方法中,我正在做一些日志记录,比如这样...
@RequestMapping(value={"", "/", "showhome"}, method={RequestMethod.POST,RequestMethod.GET})
public ModelAndView showHome(Model model) {
logger.info("########### TEST LOG INFO");
logger.error("########### TEST LOG ERROR");
logger.warn("########### TEST LOG WARN");
logger.debug("########### TEST LOG DEBUG");
/* ... */
}
但是当我 运行 应用程序时,我没有在控制台中看到任何日志输出。
我在控制台输出中也没有看到任何表明它正在使用日志框架的信息。而且没有 "can't find log4j.properties" 消息或任何东西。
我尝试将 log4j.properties 放在项目的不同位置,但没有。
我一定是漏掉了一些简单的东西?我错过了什么?
您说您在 pom.xml 中添加了 log4j,但我没有看到它,您确定这是 pom.xml 的最新版本吗?
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
您的 pom.xml 缺少日志记录引擎,您可以使用 log4j2。 请考虑使用最新版本的 log4j2 而不是 log4j (1.2.x) 因为你可以提前:
- 惰性日志:log4j(1.2.x) 如果级别未激活,也会构建一个字符串
- lambda 以避免评估昂贵的方法
- 现代平台的大量附加程序
- 配置大量参数的更简单方法(重新加载配置、附加程序……)
pom.xml
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.13.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.13.3</version>
</dependency>
</dependencies>