我有在任何给定时间运行的线程类的多个实例。我有用于日志记录需求的log4j设置。
我需要一种设置log4j的方法,以便线程类的每个实例在不同的日志文件中输出其日志。
这是我所做的(用伪代码)
public class doSomething extends Thread {
private Logger d_logger;
public doSomething(int id){
d_logger = Logger.getLogger("doSomething"+id);
String logFileName = "doSomething"+id+".log";
Properties prop = new Properties;
prop.setProperty("doSomething"+id,"DEBUG, WORKLOG");
prop.setProperty("log4j.appender.WORKLOG","org.apache.log4j.FileAppender");
prop.setProperty("log4j.appender.WORKLOG.File", logFileName);
prop.setProperty("log4j.appender.WORKLOG.layout","org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.WORKLOG.layout.ConversionPattern","%d %c{1} - %m%n");
prop.setProperty("log4j.appender.WORKLOG.Threshold","INFO");
PropertyConfigurator.configure(prop);
}
public void run(){
d_logger.info("Starting to doSomething number" + id);
}
}
尽管上面为我实例化的每个线程创建了一个文件,但它不会向这些文件输出任何内容。任何帮助深表感谢。
它不会向文件输出任何内容,因为设置记录器的正确语法是:
prop.setProperty("log4j.logger.doSomething"+id,"DEBUG, WORKLOG");
我有一个多线程Java应用程序,每个线程都是一个扩展基类的类。其中一个线程偶尔会给基类中的一个方法大量机器生成的数据,而其他线程只给出少量的人类类型数据。我想在比机器数据更高的日志级别上记录这些人类类型的消息,但是由于基类是所有线程的一部分,我无法在代码中区分出来。 一种解决方案是通知扩展类中的基类在不同的级别上登录,但是我必须将这些知识硬编码到应用程序中,这很难看。 我想做的是通过我的logba
大家好,我的社区, 我正在编写一个多线程应用程序,其中需要使用log4j为每个线程输出一个日志文件。理想情况下,我希望为每个线程运行一个单独的日志实例。我正在辩论我应该如何处理这个问题。因为每个日志实例的文件输出位置不同,所以我需要更新每个实例的属性。现在,我正在尝试创建一个新的记录器,将新属性设置到属性对象中,并使用
主要内容:Log4j Appender Properties配置Log4j 提供 Appender 对象,主要负责将日志消息打印到不同的目的地,例如控制台、文件、NT 事件日志、Swing 组件、JMS、远程 UNIX 系统日志守护进程、Socket套接字等。 每个 Appender 对象都有与其相关的不同属性,这些属性指定了该对象的行为。 属性 描述 layout Appender 使用 Layout 对象和与它们关联的转换模式来格式化日志信息。 targe
问题内容: 我们有一个weblogic批处理应用程序,它可以同时处理来自使用者的多个请求。我们使用log4j记录目的。现在,我们登录到单个日志文件以处理多个请求。调试给定请求的问题变得很麻烦,因为所有请求都将日志记录在一个文件中。 因此,计划是每个请求只有一个日志文件。使用者发送一个请求ID,必须对其进行处理。现在,实际上可能有多个使用者将请求ID发送到我们的应用程序。因此,问题是如何根据请求隔离
我希望每个JUnit 5测试都有自己的log4j2日志文件。然后,我想将此日志文件附加到诱惑超文本标记语言测试报告。 昨天我用谷歌搜索了两种不同的方法,但都没用。一种是在log4j2配置文件中使用系统属性。但是这些显然只初始化了一次。既然我写了这些行,我想知道是否有一种方法可以在运行时触发日志配置的重新初始化? 然后我尝试了一种方法,通过编程更新附加器。它非常复杂,深入log4j2的内部。它不起作
我正在使用log4j2记录应用程序的事件。然而,我被以下问题所困扰。 当前,所有日志记录消息都被写入到两个不同的附加程序中。一个具有RollingFile类型,而另一个具有Console类型。 编辑: 我看到很多问题,要求只将某个级别的消息写入文件,而将不同级别的消息写入不同文件。在我的情况下,我需要将具有一定级别的更高的消息写入到不同的文件中。例如,在我提供的情况下,带有级别错误或致命的消息将同