`

(转)log4j 一个线程记录一个日志如何配置?

    博客分类:
  • Java
 
阅读更多

log4j 一个线程记录一个日志如何配置?

现有一后台java程序,分四个线程去运行,想通过log4j 一个线程记录一个日志,如何搞? 求高人指教,谢谢!

 

Java Web 31 次浏览 2011-06-18 15:48

 

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 次

 

Java code
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; } }

Java code
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异步多线程打印

    Log4j2是Apache组织开发的一个强大的日志处理框架,它是Log4j的升级版本,具有更高的性能、更丰富的功能和更灵活的配置。Log4j2的设计目标是提供低延迟的日志记录,同时保持线程安全和可扩展性,这使得它在多线程和...

    Log4j2实现不同线程不同级别日志输出到不同的文件中

    - 要实现不同线程的日志分别输出,我们需要创建一个自定义的Log4j2配置文件(通常为`.xml`或`.json`格式)。配置文件中,我们可以定义多个Appenders(输出目的地),每个Appender可以关联不同的日志级别和线程上...

    log4j按功能保存日志

    - 在Log4j的配置文件(通常是`log4j.properties`或`log4j.xml`)中,你可以定义多个Appender,每个Appender对应一个特定的功能或模块。 - 使用`category`或`logger`标签指定Logger的名称,这通常与你的功能模块相...

    log4j 配置文档(记录日志)

    【log4j配置文档(记录日志)】 Log4j是Apache开源组织提供的一款强大的Java日志记录框架,它的灵活性和可配置性使得它成为Java开发中的首选日志工具。Log4j允许开发者精确控制日志信息的输出,无论是输出到控制台、...

    AndroidStudio 使用log4j记录日志,按照大小定期滚动日志Demo

    由于log4j本身并不直接支持Android,我们可以使用log4android,这是一个专门为Android平台设计的log4j实现。在`build.gradle`文件中,添加以下依赖: ```groovy dependencies { implementation '...

    log4j记录Debug日志

    2. **配置文件**:Log4j的配置通常通过一个XML或.properties文件完成,如`log4j.properties`或`log4j.xml`。在这个文件中,你可以定义日志输出的级别、目的地(控制台、文件、数据库等)、格式以及过滤规则。 3. **...

    log4j实用配置扩展

    ### log4j实用配置扩展 #### 一、log4j简介与重要性 Log4j是一种广泛使用的开源日志框架,由Apache软件基金会维护。它主要用于记录Java应用程序的运行时信息,帮助开发者追踪应用程序的行为、调试问题以及进行性能...

    配置Log4j的详细最好的日志工具

    Log4j作为Apache下的一个开源项目,因其高度灵活性、易配置性而成为Java应用程序中最常用的日志框架之一。本文旨在详细介绍如何配置Log4j来实现高效的日志管理。 #### 二、Log4j配置文件详解 Log4j的核心配置主要...

    Log4j将System.out搞到log4j中输出四

    为了将`System.out.println()`的输出转到Log4j,我们可以创建一个特殊的Appender,它监听标准输出流(System.out)。Log4j提供了一个名为`org.apache.log4j.ConsoleAppender`的类,用于将日志输出到控制台,我们可以...

    log4j多个简单实例

    Log4j的配置通常通过一个`.properties`或`.xml`文件完成。以`.properties`为例,一个简单的配置文件可能如下所示: ```properties # 设置根日志器级别为DEBUG log4j.rootLogger=DEBUG, FILE # 定义输出到文件的...

    log4j.jar包,和log4j.properties配置文件下载

    Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中插入日志语句,以便跟踪程序的运行情况、调试错误、监控性能等。这个框架由Apache软件基金会开发,是许多Java项目的首选日志解决方案,因为它具有...

    log4j自定义日志文件名及日志输出格式

    然而,我们可以创建一个自定义的`org.apache.log4j.FileAppender`子类来覆盖默认行为。这个子类可以重写`setFile()`方法,根据业务逻辑来决定文件名。例如,你可以根据日期、服务名、或者某种业务标识来动态生成...

    Log4j多线程实践-LogTest

    - Log4j是一个开源的日志记录工具,由Apache软件基金会开发,用于提供不同级别的日志记录,如DEBUG、INFO、WARN、ERROR和FATAL。 - 它支持多种输出方式,包括控制台、文件、数据库等,且可以通过配置文件灵活调整...

    Log4j2异步写日志效率测试源码

    然而,通过启用异步日志模式,Log4j2会将日志事件放入一个队列,然后由一个单独的后台线程处理这些事件,从而避免了主线程的阻塞,提高了应用程序的响应速度。 在"Log4j2Test"压缩包中,可能包含了以下内容: 1. ...

    log4j.properties配置详解

    - `org.apache.log4j.DailyRollingFileAppender`:根据日期滚动日志文件,每天生成一个新的日志文件。 - `org.apache.log4j.RollingFileAppender`:当文件大小达到指定值时,自动滚动日志文件,创建新文件。 - `...

    Log4J_全能配置文件.pdf

    本文将详细介绍一个Log4J的全能配置文件,包括如何配置日志级别、日志输出目的地以及格式化日志输出等。 #### 二、配置文件结构解析 ##### 2.1 日志根类别设置 ```properties log4j.rootLogger=DEBUG,CONSOLE,A1,...

    log4j日志文件

    - Commons-Logging:提供了一个统一的日志接口,可以根据环境自动选择合适的日志实现(如Log4j、JDK内置日志等)。在程序中使用`Log`和`LogFactory`,无需直接引用Log4j的类。 在实际应用中,根据项目需求,可以...

    log4j日志记录对于exception的记录问题

    "log4j日志记录对于exception的记录问题"这个话题涉及到如何有效地使用Log4j,一个广泛使用的开源日志框架,来处理异常情况。Log4j允许我们定制日志级别,格式,以及存储位置,以满足不同项目的需要。 首先,Log4j...

Global site tag (gtag.js) - Google Analytics