log4j输出多个自定义日志文件
如果在实际应用中需要输出独立的日志文件,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?
先看一个常见的log4j.properties文件,它是在控制台和test.log文件中记录日志:
log4j.rootLogger=DEBUG, stdout, logfile
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=log/test.log
log4j.appender.logfile.MaxFileSize=128MB
log4j.appender.logfile.MaxBackupIndex=3
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
如果在同一类中需要输出多个日志文件呢?其实道理是一样的,先在Test.java中定义:
private static Log logger1 = LogFactory.getLog("mylogger1");
private static Log logger2 = LogFactory.getLog("mylogger2");
log4j.properties中配置如下:
log4j.logger.mylogger1=DEBUG,test1
log4j.appender.test1=org.apache.log4j.FileAppender
log4j.appender.test1.File=log/test1.log
log4j.appender.test1.layout=org.apache.log4j.PatternLayout
log4j.appender.test1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
log4j.logger.mylogger2=DEBUG,test2
log4j.appender.test2=org.apache.log4j.FileAppender
log4j.appender.test2.File=log/test2.log
log4j.appender.test2.layout=org.apache.log4j.PatternLayout
log4j.appender.test2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
不同日志要使用不同的logger(如输出到test1.log的要用logger1.info("abc"))。
还有一个问题,就是这些自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关:
log4j.additivity. mylogger1 = false
它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方了。
但是这种方式有个小缺陷,那就是打印的日志中类名只能是mylogger或者mylogger2。
2 动态配置路径
若程序需要的日志路径需要不断的变化,而又不可能每次都去改配置文件,此时可以利用环境变量来解决。
log4j的配置如下:
log4j.rootLogger=DEBUG,INFOLOG,DEBUGLOG
#info log
log4j.appender.INFOLOG =org.apache.log4j.DailyRollingFileAppender
log4j.appender.INFOLOG.File= ${log.dir}/${log.info.file}
log4j.appender.INFOLOG.DatePattern=.yyyy-MM-dd
log4j.appender.INFOLOG.Threshold=INFO
log4j.appender.INFOLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.INFOLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
#debug log
log4j.appender.DEBUGLOG =org.apache.log4j.RollingFileAppender
log4j.appender.DEBUGLOG.File= ${log.dir}/${log.debug.file}
log4j.appender.DEBUGLOG.Threshold=DEBUG
log4j.appender.DEBUGLOG.MaxFileSize=128MB
log4j.appender.DEBUGLOG.MaxBackupIndex=3
log4j.appender.DEBUGLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.DEBUGLOG.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c.%M(%L) - %m%n
此时,在使用log打印日志之前,需要利用System定义日志的输出路径和文件名的环境变量:
System.setProperty(“log.dir”, logDir);
System.setProperty(“log.info.file”, infoLogFileName);
System.setProperty(“log.debug.file”, debugLogFileName);
附:Pattern参数的格式含义
%c 输出日志信息所属的类的全名
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2013-8-19- 22:10:28
%f 输出日志信息所属的类的类名
%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
%m 输出代码中指定的信息,如log(message)中的message
%n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n”
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
%r 输出自应用启动到输出该日志信息所耗费的毫秒数
%t 输出产生该日志事件的线程名
http://m.jb51.net/show/45525
相关推荐
当前日志放在log4j.appender.File.File=${user.dir}/logs/hmiservice.log对应的命名文件中, 过了时间将原日志文件命名为原文件名后加上log4j.appender.File.DatePattern='.'yyyy-MM-dd-HH对应格式的日期, 注意不能...
自定义 Log4J 的 SocketAppender,在日志服务器和调用事件的各种客户端之间进行通信。 如何使用:AsynchListener - 通知程序 - 当日志服务器在特定端口和机器上准备就绪时,通知日志客户端是否准备好调用通知。 ...
日志记录是一个灵活的日志记录库,可根据Java的log4j库的设计在Ruby程序中使用。 它具有分层的日志记录系统,自定义级别名称,每个日志事件多个输出目标,自定义格式等。 安装 gem install logging 例子 本示例将...
本组件基于logback+slf4j,暂不支持log4j,如需解决log4j的日志,可以参照本组件的思想去完成。 本组件支持的脱敏数据类型:八大基本类型及其包装类型、String类型、Map、List、JSON字符串、项目中的POJO对象。 注...
可以在使用标准log4j模式的设置中定义多个自定义布局模式(例如,%d {yyyy-dd-MM HH:mm:SS,SSS}%c%p%m)现在,可以按选定的属性或按两次单击左侧TreeTable中的一个项目。 可以通过运行“ mvn clean package...
事实上,在C的世界里面没有特别好的日志函数库(就像JAVA里面的的log4j,或者C 的log4cxx)。C程序员都喜欢用自己的轮子。printf就是个挺好的轮子,但没办法通过配置改变日志的格式或者输出文件。syslog是个系统...
一般的这个portlet 填补了liferay 中log4j 控制台日志中的空白。 liferay 中的所有自定义日志级别将在重新启动后消失。 如果测试人员在控制台的帮助下工作,自定义日志级别的消失可能是一个问题,因为他们应该再次...
我在大学时写了这段代码,我经常用它来生成方便、易于调试的终端和日志文件输出。 它包含我在本科级别的 Java 编码中发现有用的库代码。 最值得注意的是,它解决了以下烦人的问题: #1. 无法找到您的打印报表。 很...
搜索多个文件合并多个文件比较日志主题支持64位支持(允许加载更多文件) 个性化(每个用户的用户设置) 可扩展的列:能够添加更多特定于数据源实现的列导出到Excel / CSV文件类似于协作的功能:能够将日志消息发送...
对于跟踪不同应用程序或同一应用程序的多个实例的日志文件中的警报很有用。配置该应用程序是通过文件configuration.edn配置的。 运行应用程序时,此文件需要位于当前工作目录中。 要配置要检查的文件或自定义行为,...
B3LOG Solo特性基于标签的文章分类同步发布文章到腾讯微博Ping Google Blog Search Engine博客/标签 Atom Feed 输出评论回复及邮件提醒自定义页面置顶/相关/随机/站外相关文章文章、页面永久链接(Permalink)文章...
startActivities : 启动多个 Activity startHomeActivity : 回到桌面 getActivityList : 获取 Activity 栈链表 getLauncherActivity : 获取启动项 Activity getTopActivity : 获取栈顶 Activity ...
环境搭建和RestFul风格接口配置Log4j2,实现不同环境日志打印。配置系统全局异常映射处理。定时任务和异步任务的使用方式。多个拦截器配置和使用场景。引入JdbcTemplate,和多数据源配置。集成Druid连接池,配置监控...
支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择 支持异步线程的追踪,包括线程池,多级异步线程等场景 几乎无性能损耗,快速稳定 TLog 更新日志: v1.3.1 bug: #I3RROF:xxljob的依赖会强制传递
您的star是我继续前进的动力,如果喜欢请右上角帮忙点个star Gitee的star趋势图 贡献者 概述 TLog是一个轻量级的分布式日志标记追踪...支持日志标签的自定义模板的配置,提供多个系统级埋点标签的选择 支持异步线程的追
2)使用的第三方框架太多,log4j输出太多,看起来费劲啊,另外一般异常日志也是一出就是一堆,不认真看,根本看不出问题在哪。在windows下用.net开发,早习惯了debugview去看(用好degbugview的过滤和高亮,可以让你...
15、新增log4j2,TableGo的运行日志将在logs目录中输出,方便查找问题。 16、公共参数移除两个扩展参数配置,生成JavaBean功能移除用户模板配置。 17、新增TableGo官网:http://www.tablego.cn 18、新增数据信息...
15、新增log4j2,TableGo的运行日志将在logs目录中输出,方便查找问题。 16、公共参数移除两个扩展参数配置,生成JavaBean功能移除用户模板配置。 17、新增TableGo官网:http://www.tablego.cn 18、新增数据信息...
chapter4-2-3:对log4j进行多环境不同日志级别的控制 chapter4-2-4:使用AOP统一处理Web请求日志 chapter4-2-5:使用log4j记录日志到MongoDB chapter4-2-6:Spring Boot 1.5.x新特性:动态修改日志级别] 安全管理 ...