我试图在springboot中配置log4j2。我已经从pom.xml.中删除(排除)了登录依赖项,我正在名为log4j2.xml的资源文件夹下使用此xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Appenders>
<Console name="LogToConsole" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="LogToFile" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Logger name="com.ashish" level="debug" additivity="false">
<AppenderRef ref="LogToFile"/>
<AppenderRef ref="LogToConsole"/>
</Logger>
<Logger name="org.springframework.boot" level="error" additivity="false">
<AppenderRef ref="LogToConsole"/>
</Logger>
<Root level="error">
<AppenderRef ref="LogToFile"/>
<AppenderRef ref="LogToConsole"/>
</Root>
</Loggers>
</Configuration>
这是我的控制器类。
package com.ashish;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.Arrays;
import java.util.List;
@Controller
public class HelloController {
private static final Logger logger = LogManager.getLogger(HelloController.class);
private List<Integer> num = Arrays.asList(1, 2, 3, 4, 5);
@GetMapping("/")
public String main(Model model) {
if (logger.isDebugEnabled()) {
logger.debug("Hello from Log4j 2 - num : {}", num);
}
logger.debug("Hello from Log4j 2 - num : {}", () -> num);
model.addAttribute("tasks", num);
return "welcome";
}
private int getNum() {
return 100;
}
}
我在这里错过了什么吗?我尝试使用application.properties也使用最新版本的Log4j2.But仍然没有created.When我运行应用程序,我看不到任何日志文件在xml中指定的路径上动态创建。
我无法评论log4j2配置文件本身的内容,可能首先在控制台上打印并确保它确实由log4j2驱动是有意义的。但是,我将参考问题的开头:
我正在尝试在springboot中配置log4j2。我已经从pom.xml中移除了(排除了)回退依赖项
您没有给出< code>pom.xml,但是一般来说,为了将spring boot切换到与log4j2一起工作,您应该:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
快速谷歌已经揭示了这个教程,包含所有的步骤,包括这样一个集成端到端的例子。
首先,在配置中指定了status="DEBUG"。因此,您将看到Log4j在控制台上(或者system.out被路由到的任何地方)配置自己。如果没有,那么您就没有真正使用Log4j。
如果确实看到输出,请检查调试行。我怀疑您的日志文件由于权限问题而未创建,或者未按预期写入。
您的配置指定了一个名为“logs”的相对目录。当应用程序启动时,无论哪个目录是工作目录,都应该包含您的日志目录。在Linux上经常以“/”结束。您几乎肯定没有权限在那里创建日志目录,因此配置将会失败。
我使用log4j进行日志记录,并且使用.log格式的所有日志文件,其结构简单,如; log4j.rootcategory=info,C,R log4j.appender.c=org.apache.log4j.consoleappender log4j.appender.c.layout=org.apache.log4j.patternlayout log4j.appender.r.layout=o
大家好,我的社区, 我正在编写一个多线程应用程序,其中需要使用log4j为每个线程输出一个日志文件。理想情况下,我希望为每个线程运行一个单独的日志实例。我正在辩论我应该如何处理这个问题。因为每个日志实例的文件输出位置不同,所以我需要更新每个实例的属性。现在,我正在尝试创建一个新的记录器,将新属性设置到属性对象中,并使用
问题内容: 我正在尝试配置log4j以将消息记录到文件中。现在,确实使用我提供的名称创建了该文件,但是日志未写入该文件。我的代码: 我文件的内容: 运行此命令时,将在控制台中获得以下输出: 该文件确实在我的主目录中创建。但是它是空的。 有什么想法我做错了吗?我正在使用log4j 1.2.17版。 问题答案: 输出似乎是Java标准日志记录框架(JUL)发出的默认格式。 因此,有两种可能性(想到):
我不清楚java程序是如何知道xml文件的位置的。我想这就是问题所在。这就是我在代码中的设置, 任何帮助都是徒劳的。谢了。
我是log4j的新手。我创建了一个在其中实现log4j的示例java程序。 下面是java程序: 我正在控制台屏幕上获取输出。但是没有生成日志文件。我还使用以下链接在Eclipse neon中配置了我的项目:配置 我做了一切好事。但是日志文件没有生成。当我以编程方式实现log4j时,文件正在生成。以下是我的属性文件: 我需要做什么才能让Log4J写入日志文件?
使用log4j library 1.1.4和slf4j-api 1.7.25在我的应用程序中进行日志记录可以很好地工作。 但是在将log4j库从1.1.4版本更新到1.1.5(或更高版本)之后,日志文件只会停止创建,不会产生任何异常或警告。即使是1.1.5版本也相当老,所以我宁愿使用更新的版本。配置的工作方式一定发生了变化,但我找不到是什么。 这段简单的代码将在Log4J1.1.4中创建滚动日志文