log4j 一个线程记录一个日志如何配置?
现有一后台java程序,分四个线程去运行,想通过log4j 一个线程记录一个日志,如何搞? 求高人指教,谢谢!
5 个回答
四个线程分别使用不同的日志文件就行了。
2011-06-18 15:49 推荐: 0 次
引用 1 楼 im110 的回复:
四个线程分别使用不同的日志文件就行了。
四个线程分别使用不同的日志文件就行了。
具体如何搞?
我现在是这么做的
新建四个log4j.properties 1-4
新建四个X.log 日志文件,每个properties文件指定一个日志文件
然后
protected Logger log = Logger.getLogger(getClass());
public void run() {
PropertyConfigurator.configure("log4j"+(i+1)+".properties");
...
...
...
log.debug(i+"xxxxxxxxxxxx");
}
但这样搞不行,四个日志文件里相互的线程都有
2011-06-18 15:58 推荐: 0 次
求高人~~~
2011-06-21 08:41 推荐: 0 次
publicclass ThreadLog1 extends Thread {
privatestatic Logger logger = Logger.getLogger("file_1");
privateboolean stop =false;
publicvoid run() {
while(!stop){
System.out.println("I am ThreadLog1");
logger.info("I am ThreadLog1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
publicboolean isStop() {
return stop;
}
publicvoid setStop(boolean stop) {
this.stop = stop;
}
}
publicclass ThreadLog2 extends Thread {
privatestatic Logger logger = Logger.getLogger("file_2");
privateboolean stop =false;
publicvoid run() {
while(!stop){
System.out.println("I am ThreadLog2");
logger.info("I am ThreadLog2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
publicboolean isStop() {
return stop;
}
publicvoid setStop(boolean stop) {
this.stop = stop;
}
publicstaticvoid main(String []args){
ThreadLog1 log1 =new ThreadLog1();
ThreadLog2 log2 =new ThreadLog2();
log1.start();
log2.start();
}
}
log4j.properties:
log4j.logger.file_1 = DEBUG,file_1
log4j.appender.file_1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file_1.layout=org.apache.log4j.PatternLayout
log4j.appender.file_1.layout.ConversionPattern=\n[%p %d{yyyy-MM-dd HH:mm:ss SSS}[%l]]\n%m
log4j.appender.file_1.file=d:/log/file_1/log.txt
log4j.additivity.file_1=false
log4j.logger.file_2 = DEBUG,file_2
log4j.appender.file_2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file_2.layout=org.apache.log4j.PatternLayout
log4j.appender.file_2.layout.ConversionPattern=\n[%p %d{yyyy-MM-dd HH:mm:ss SSS}[%l]]\n%m
log4j.appender.file_2.file=d:/log/file_2/log.txt
log4j.additivity.file_2=false
2011-06-21 09:41 推荐: 0 次 有帮助? 请推荐
非常感谢 yangxuan0418,原来可以Logger.getLogger("file_2"); 这样用,谢谢!
不过今上 午发现还有一个方法可以实现 就是改用log4j.xml,利用org.apache.log4j.varia.LevelRangeFilter和 org.apache.log4j.varia.StringMatchFilter可以做到分级分线程记录日志,希望也可以给大家一些启示。
相关推荐
Log4j2是Apache组织开发的一个强大的日志处理框架,它是Log4j的升级版本,具有更高的性能、更丰富的功能和更灵活的配置。Log4j2的设计目标是提供低延迟的日志记录,同时保持线程安全和可扩展性,这使得它在多线程和...
- 要实现不同线程的日志分别输出,我们需要创建一个自定义的Log4j2配置文件(通常为`.xml`或`.json`格式)。配置文件中,我们可以定义多个Appenders(输出目的地),每个Appender可以关联不同的日志级别和线程上...
- 在Log4j的配置文件(通常是`log4j.properties`或`log4j.xml`)中,你可以定义多个Appender,每个Appender对应一个特定的功能或模块。 - 使用`category`或`logger`标签指定Logger的名称,这通常与你的功能模块相...
【log4j配置文档(记录日志)】 Log4j是Apache开源组织提供的一款强大的Java日志记录框架,它的灵活性和可配置性使得它成为Java开发中的首选日志工具。Log4j允许开发者精确控制日志信息的输出,无论是输出到控制台、...
由于log4j本身并不直接支持Android,我们可以使用log4android,这是一个专门为Android平台设计的log4j实现。在`build.gradle`文件中,添加以下依赖: ```groovy dependencies { implementation '...
2. **配置文件**:Log4j的配置通常通过一个XML或.properties文件完成,如`log4j.properties`或`log4j.xml`。在这个文件中,你可以定义日志输出的级别、目的地(控制台、文件、数据库等)、格式以及过滤规则。 3. **...
### log4j实用配置扩展 #### 一、log4j简介与重要性 Log4j是一种广泛使用的开源日志框架,由Apache软件基金会维护。它主要用于记录Java应用程序的运行时信息,帮助开发者追踪应用程序的行为、调试问题以及进行性能...
Log4j作为Apache下的一个开源项目,因其高度灵活性、易配置性而成为Java应用程序中最常用的日志框架之一。本文旨在详细介绍如何配置Log4j来实现高效的日志管理。 #### 二、Log4j配置文件详解 Log4j的核心配置主要...
为了将`System.out.println()`的输出转到Log4j,我们可以创建一个特殊的Appender,它监听标准输出流(System.out)。Log4j提供了一个名为`org.apache.log4j.ConsoleAppender`的类,用于将日志输出到控制台,我们可以...
Log4j的配置通常通过一个`.properties`或`.xml`文件完成。以`.properties`为例,一个简单的配置文件可能如下所示: ```properties # 设置根日志器级别为DEBUG log4j.rootLogger=DEBUG, FILE # 定义输出到文件的...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的运行情况、调试错误、监控性能等。这个框架由Apache软件基金会开发,是许多Java项目的首选日志解决方案,因为它具有...
然而,我们可以创建一个自定义的`org.apache.log4j.FileAppender`子类来覆盖默认行为。这个子类可以重写`setFile()`方法,根据业务逻辑来决定文件名。例如,你可以根据日期、服务名、或者某种业务标识来动态生成...
- Log4j是一个开源的日志记录工具,由Apache软件基金会开发,用于提供不同级别的日志记录,如DEBUG、INFO、WARN、ERROR和FATAL。 - 它支持多种输出方式,包括控制台、文件、数据库等,且可以通过配置文件灵活调整...
然而,通过启用异步日志模式,Log4j2会将日志事件放入一个队列,然后由一个单独的后台线程处理这些事件,从而避免了主线程的阻塞,提高了应用程序的响应速度。 在"Log4j2Test"压缩包中,可能包含了以下内容: 1. ...
- `org.apache.log4j.DailyRollingFileAppender`:根据日期滚动日志文件,每天生成一个新的日志文件。 - `org.apache.log4j.RollingFileAppender`:当文件大小达到指定值时,自动滚动日志文件,创建新文件。 - `...
本文将详细介绍一个Log4J的全能配置文件,包括如何配置日志级别、日志输出目的地以及格式化日志输出等。 #### 二、配置文件结构解析 ##### 2.1 日志根类别设置 ```properties log4j.rootLogger=DEBUG,CONSOLE,A1,...
- Commons-Logging:提供了一个统一的日志接口,可以根据环境自动选择合适的日志实现(如Log4j、JDK内置日志等)。在程序中使用`Log`和`LogFactory`,无需直接引用Log4j的类。 在实际应用中,根据项目需求,可以...
"log4j日志记录对于exception的记录问题"这个话题涉及到如何有效地使用Log4j,一个广泛使用的开源日志框架,来处理异常情况。Log4j允许我们定制日志级别,格式,以及存储位置,以满足不同项目的需要。 首先,Log4j...