`
dickyzhu
  • 浏览: 107452 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

log4j自定义输出多个文件

阅读更多
log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。

  先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:

log4j.rootLogger=DEBUG, stdout, logfile



log4j.category.org.springframework=ERROR

log4j.category.org.apache=INFO



log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n



log4j.appender.logfile=org.apache.log4j.RollingFileAppender

log4j.appender.logfile.File=${myweb.root}/WEB-INF/log/myweb.log

log4j.appender.logfile.MaxFileSize=512KB

log4j.appender.logfile.MaxBackupIndex=5

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

  

如果想对不同的类输出不同的文件(以cn.com.Test为例),先要在Test.java中定义:

private static Log logger = LogFactory.getLog(Test.class);

  然后在log4j.properties中加入:

log4j.logger.cn.com.Test= DEBUG, test

log4j.appender.test=org.apache.log4j.FileAppender

log4j.appender.test.File=${myweb.root}/WEB-INF/log/test.log

log4j.appender.test.layout=org.apache.log4j.PatternLayout

log4j.appender.test.layout.ConversionPattern=%d %p [%c] - %m%n

  也就是让cn.com.Test中的logger使用log4j.appender.test所做的配置。



  但是,如果在同一类中需要输出多个日志文件呢?其实道理是一样的,先在Test.java中定义:

private static Log logger1 = LogFactory.getLog("myTest1");

private static Log logger2 = LogFactory.getLog("myTest2");

  然后在log4j.properties中加入:

log4j.logger.myTest1= DEBUG, test1
log4j.appender.test1=org.apache.log4j.FileAppender

log4j.appender.test1.File=${myweb.root}/WEB-INF/log/test1.log

log4j.appender.test1.layout=org.apache.log4j.PatternLayout

log4j.appender.test1.layout.ConversionPattern=%d %p [%c] - %m%n

  

log4j.logger.myTest2= DEBUG, test2

log4j.appender.test2=org.apache.log4j.FileAppender

log4j.appender.test2.File=${myweb.root}/WEB-INF/log/test2.log

log4j.appender.test2.layout=org.apache.log4j.PatternLayout

log4j.appender.test2.layout.ConversionPattern=%d %p [%c] - %m%n

  也就是在用logger时给它一个自定义的名字(如这里的"myTest1"),然后在log4j.properties中做出相应配置即可。别忘了不同日志要使用不同的logger(如输出到test1.log的要用logger1.info("abc"))。



  还有一个问题,就是这些自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关:

log4j.additivity.myTest1 = false

  它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方啦!注意这里的"myTest1"是你在程序中给logger起的那个自定义的名字!

如果你说,我只是不想同时输出这个日志到log4j.rootLogger所配置的logfile中,stdout里我还想同时输出呢!那也好办,把你的log4j.logger.myTest1 = DEBUG, test1改为下式就OK啦!

log4j.logger.myTest1=DEBUG, test1

log4j不能创建目录结构,如果想写入log的目录结构不存在,会出错。比如,想把log放在D:/temp/,当temp不存在就会出错。
分享到:
评论

相关推荐

    log4j输出多个自定义路径的日志文件小例子

    本工程主要实现log4j输出多个自定义路径的日志文件,为方便大家使用

    log4j多文件输出打印

    log4j、日志输出、自定义日志、多文件输出。

    java自定义日志输出文件(log4j日志文件输出多个自定义日志文件)

    打印日志的在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别、打印形式和日志的输出路径,下面看一个示例吧

    log4j使用实战

    log4j.rootLogger=INFO,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender INFO是日志记录的最低等级,必须写,它和比它高的等级会进入日志,如WARN、ERROR、FATAL、OFF。 关于8个日志等级,参考:...

    zlog---比log4c更牛的c语言日志库

    功能: syslog风格的配置文件,易学易用 ...MDC,一个log4j风格的键-值对的表,可以扩展用户自定义的字段 自诊断,可以在运行时输出zlog自己的日志和配置状态 不依赖其他库,只要是个POSIX系统就成

    纯C日志函数库zlog.zip

     * 多种输出,包括动态文件、静态文件、stdout、stderr、syslog、用户自定义输出函数  * 运行时手动或自动刷新配置(同时保证安全)  * 高性能,在我的笔记本上达到338'638条日志每秒, 大概是syslog(3)...

    如何编写批处理文件批处理文件批处理文件

    下一个文件之前,每份文件都已被打开、读取并经过处理。 处理包括读取文件,将其分成一行行的文字,然后将每行 解析成零或更多的符号。然后用已找到的符号字符串变量值 调用 For 循环。以默认方式,/F 通过每个...

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版_JAR)

    8、生成自定义文件新增和调整了多个参数,使模板编写更加方便快捷。 9、生成数据库文档功能新增生成标题目录功能。 10、新增主要UI界面的界面大小配置功能,可根据需求在配置文件中调整UI界面大小。 11、新增...

    基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版_EXE)

    8、生成自定义文件新增和调整了多个参数,使模板编写更加方便快捷。 9、生成数据库文档功能新增生成标题目录功能。 10、新增主要UI界面的界面大小配置功能,可根据需求在配置文件中调整UI界面大小。 11、新增...

    数据库工具TableGo_preview_20190212.rar

     8、生成自定义文件新增和调整了多个参数,使模板编写更加方便快捷。  9、生成数据库文档功能新增生成标题目录功能。  10、新增主要UI界面的界面大小配置功能,可根据需求在配置文件中调整UI界面大小。  11、...

    网管教程 从入门到精通软件篇.txt

    CDM:Visual dBASE自定义数据模块文件 CDR:CorelDRAW绘图文件;原始音频CD数据文件 CDT:CorelDRAW模板 CDX:CorelDRAW压缩绘图文件;Microsoft Visual FoxPro索引文件 CFG:配置文件 CGI:公共网关接口脚本...

    jpivot学习总结.doc

    在这个文件中形成逻辑模型和数据库物理模型的对应。 3.2. Cube 一个 Cube 是一系列维度 (Dimension) 和度量 (Measure) 的集合区域。在 Cube 中, Dimension 和 Measure 的共同地方就是共用一个事实表。 Cube 中的...

    ssh(structs,spring,hibernate)框架中的上传下载

    如果有多个映射文件需要声明,使用类路径映射方式显然比直接单独指定映射文件名的方式要简便。  第27~30行定义了Spring代理Hibernate数据操作的HibernateTemplate模板,而第32~34行将该模板注入到tfileDAO中。  ...

    Maven权威指南 很精典的学习教程,比ANT更好用

    构建这个多模块项目 6.6. 运行Web应用 7. 多模块企业级项目 7.1. 简介 7.1.1. 下载本章样例 7.1.2. 多模块企业级项目 7.1.3. 本例中所用的技术 7.2. simple-parent项目 7.3. simple-model模块 7.4. ...

    springboot参考指南

    使用YAML或JSON配置Log4j2 vi. 67. 数据访问 i. 67.1. 配置一个数据源 ii. 67.2. 配置两个数据源 iii. 67.3. 使用Spring Data仓库 iv. 67.4. 从Spring配置分离@Entity定义 v. 67.5. 配置JPA属性 vi. 67.6. 使用...

    multiCCL_f

    “取消”,这样输出文件就都放到这个output 目录下了。 3. 设置保护片段时,如果所保护的片段本身是独立的特征码,就会  导致定位失败,因为所生成的文件会全部被杀,而且一直如此。  所以在设置前,  先要...

    软件病毒特征码定位软件multiCCL

    “取消”,这样输出文件就都放到这个output 目录下了。 3. 设置保护片段时,如果所保护的片段本身是独立的特征码,就会  导致定位失败,因为所生成的文件会全部被杀,而且一直如此。  所以在设置前,  先要...

    MySQL 5.1参考手册

    5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建用户账户 5.2.3. MySQL实例管理器命令行选项 ...

    oracle数据库经典题目

    10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。 11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。 12.根据约束的作用域,约束...

    Toad 使用快速入门

    和其他的 PL/SQL 编辑工具不同,TOAD 允许在一个文件中操作多个数据库对象,可以编译一个对象、编译多个对象、编译到当前光标、从光标开始编译。在运行出现错误时,存储过程停止到有问题的语句。用户可以使用快捷...

Global site tag (gtag.js) - Google Analytics