log4j配置输出到多个日志文件(转)

參考资料:http://logging.apache.org/log4j/1.2/manual.html

通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中。那么我们log4j为我们提供了这种功能,以下我们来一步一步看是怎么做的。这里以property的配置方式写。xml方式类似,想了解的,能够看官方文档。

这里測试的项目包结构例如以下:

log4j 主要由三部分组成:Loggers, Appenders 和Layouts,(appender 能够理解为输出的目的地)

咱们的log4j.properties或log4j.xml 里能够配置多个logger,

每一个logger 能够相应多个Appender,而appender和layout是一一相应的。

以下看最简单的配置,我们配置系统rootLogger,例如以下:

当中:

1、log4j.rootLogger 这个的配置三模式为:log4j.rootLogger=level,appender1,appender2,...

level为日志等级。关系如:DEBUG < INFO < WARN < ERROR < FATAL,等级越小能够输出比自己大的日志,如设置为debug,能够输出warn,error,等的日志。

而紧跟在后面的是appender列表:appender1,appender2,...

2、log4j.appender.A_console=org.apache.log4j.ConsoleAppender 指定相应的appender类,这是输出到控制台。

3、log4j.appender.A_console.layout=org.apache.log4j.PatternLayout 。指定layout类,

4、log4j.appender.A_console.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 输出格式化。详细怎么使用能够查询PatternLayout 这个api。

我们用一个main方法输出来看看日志打印效果

配置多个appener的情况

  每一个logger能够相应多个appender,例如以下配置:

这样。当我们远行App时,日志会办出到控制台和mylog.log日志文件,这是就不再贴出来了。

配置多个logger 情况

  当我们须要对一些重要的日志进行抽取时,或系统中比較独立的模块,如专门与外部系统对接的接口。这时我们就能够配置多个logger,而实现日志分柝。便于我们的日常维护工作。

我们以下在原来的基础上再添加两个logger ,分别为:“com.pt.test” 和“com.pt.test.intf”,命名都是用包名来定义的,看看具体的配置吧:

我们注意到:新添加的两个logger 配置为:

log4j.logger.com.pt.test=debug,A_file2

日志输出到:D:/test/logfile2.log

log4j.logger.com.pt.test.intf=debug,A_file3

日志输出到:D:/test/logfile3.log

我们看看三个文件的日志输出内容:

logfile1.log

logfile2.log

logfile3.log

这时我们会发现,filelog1,filelog2,filelog3都有打印了日志内容,细心的朋友应该会发现,filelog1里包括了filelog2里的全部内容,默认情况下,子Logger会的日志会向全部父级的appender输出,假设我们不想要这种输出那么我们能够把相应的Looger的additivity属性设置为false就能够了,如:把第17行凝视打开log4j.additivity.com.pt.test=false

这样,rootLogger就不会再有Logger "com.pt.test" 及其子包里的日志了。

滚动生成日志文件的两种模式:

1、使用 RollingFileAppender 。这样的模式为以大小为基准生成日志文件,配置maxFileSize来限定每一个文件大小,当超出指定大小,系统会自己主动生成下一个文件,

如以下面所看到的的appender:

2、使用DailyRollingFileAppender ,这样的模式是按时间来分割文件。能够细每种生成一个文件如:

log4j.appender.A_r_date.datePattern=‘.‘yyyy-MM-dd-HH-mm‘.log‘ 表示每分钟就会生成一个日志文件如:

rollFiledate.log.2014-07-12-14-09.log  rollFiledate.log.2014-07-12-14-10.log

假设想配置每天一个日志文件则能够:log4j.appender.A_r_date.datePattern=‘.‘yyyy-MM-dd‘.log‘

web 项目中使用log4j

我把仅仅要把写好的log4j.properties 放到src文件夹下就能够了。

原文地址:https://www.cnblogs.com/haw2106/p/8880906.html

时间: 2024-07-30 04:23:37

log4j配置输出到多个日志文件(转)的相关文章

log4j配置输出到多个日志文件

通常我们项目里,有一些重要的日志想单独的输出到指定的文件,而不是全总输出到系统的日志文件中.那么我们log4j为我们提供了这种功能,以下我们来一步一步看是怎么做的.这里以property的配置方式写.xml方式类似,想了解的,能够看官方文档. 这里測试的项目包结构例如以下: log4j 主要由三部分组成:Loggers, Appenders 和Layouts,(appender 能够理解为输出的目的地) 咱们的log4j.properties或log4j.xml 里能够配置多个logger, 每

Log4j配置的经典总结,打印日志文件,日志存库

    一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制 日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务 器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程. Log4j 由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式.日志信息的优先级从高到低有ERROR.WARN. INFO.DEBUG,分别用来

log4j:特定类的日志输出到指定的日志文件中

问题描述:我有一个类foo.bar.Baz,我想让Baz这个类的日志输出到指定的日志文件中,其它的就使用默认的配置. log4j.rootLogger=ERROR, logfile log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender log4j.appender.logfile.datePattern='-'dd'.log' log4j.appender.logfile.File=log/radius-prod.log

log4j实现每个线程保存一个日志文件

log4j.properties: ### direct log messages to stdout ### 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.Conversion

【转】 log4j输出多个自定义日志文件

原文链接 http://blog.csdn.net/janestone/article/details/1862678 log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况, 怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在 现有的log4j基础上稍加配置即可轻松实现这一功能. 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志: log4j.rootLogger=DEBUG, stdout

log4j配置参数详解——按日志文件大小、日期切分日志文件

项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. 一.基本配置解析 常用配置1: [java] view plain copy #日志级别,还可以log4j.rootLogger=INFO,file2,file3 指定file2.3的输出文件 log4j.rootLogger=info,exception,thread #info #每一天产生1个

log4j配置(详细版)————详细的日志才是解决bug的王道

你所需要的唯一Jar包是: log4j-1.2.x.jar 我当前使用的是log4j-1.2.17.jar  跑这么久一切正常, 日志信息正好可用 配置文件log4j.properties # Log4J Settings for log4j 1.2.x (via jakarta-commons-logging) # # The five logging levels used by Log are (in order): # # 1. DEBUG (the least serious) # 2

Nginx的基本配置:虚拟主机、日志文件、缓存、自动列目录的配置

Nginx配置文件总览 Nginx的配置文件结构 #设置用户 user root; #工作衍生的进程数 (一般=CPU核心数或核心数*2) worker_processes 2; #设置错误文件的存放路径 error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #设置pid的存放路径(pid是控制系统中的重要文件) pid logs/nginx.pid; #设置最大连接

执行系统命令并且将输出写到指定日志文件的shell脚本(2)

上一篇是个简单的可以执行并且写入日志的脚本,但是如果放到生产环境上就显得太粗糙了,所以需要进一步的优化: #! /bin/bash if [ -d "/opt/bmc" ] ; then if [ -f "/opt/bmc/usysfault.log" ] ; then { date +"%Y-%m-%d %H:%M:%S" /usr/lpp/diagnostics/bin/usysfault #要执行的命令的绝对路径 } > /opt/b