- 浏览: 64053 次
- 性别:
- 来自: 上海
文章分类
最新评论
最近在用多个线程走多个任务,但是日志用一个文件总有的线程输出不了。
其他博客找的解决方法:
log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。
1)先看一个常见的log4j.properties文件,它是在控制台和daily.log文件中记录日志:
log4j.rootLogger=error,dailyLog,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.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.dailyLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyLog.File=../logs/daily.log
log4j.appender.dailyLog.Append=true
log4j.appender.dailyLog.Threshold=ERROR
log4j.appender.dailyLog.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyLog.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyLog.layout.ConversionPattern=%5p:%d - %m%n
2)如果想对不同的功能模块输出不同的文件,怎么操作?
如:
用户基础信息模块路径为:com.isoft.visa.baseinf
它下面有个类:com.isoft.visa.baseinf.service.impl.UserInfo
private Log log = LogFactory.getLog(UserInfo.class);
然后在log4j.properties中加入:
log4j.logger.com.isoft.visa.baseinf=info,userLog,stdout
log4j.appender.userLog=org.apache.log4j.FileAppender
log4j.appender.userLog.File=../logs/userinfo.log
log4j.appender.userLog.Append=true
log4j.appender.userLog.Threshold=info
log4j.appender.userLog.layout=org.apache.log4j.PatternLayout
log4j.appender.userLog.layout.ConversionPattern==%d %p [%c] - %m%n
注:也就是让com.isoft.visa.baseinf模块下所有的logger使用log4j.appender.userLog所做的配置。
3)自定义“别名”的使用,相当于2的变种。
同上模块:
private Log log = LogFactory.getLog("userInfoLog");
然后在log4j.properties中加入:
log4j.logger.userInfoLog=info,userLog,stdout
log4j.appender.userLog=org.apache.log4j.FileAppender
log4j.appender.userLog.File=../logs/userinfo.log
log4j.appender.userLog.Append=true
log4j.appender.userLog.Threshold=info
log4j.appender.userLog.layout=org.apache.log4j.PatternLayout
log4j.appender.userLog.layout.ConversionPattern==%d %p [%c] - %m%n
注:也就是在用logger时给它一个自定义的名字(如这里的"userInfoLog"),然后在log4j.properties中做出相应配置即可。,在这种模式下,即使在同一个类中也能定义多个不同输出的log.
在类中调用代码如下:
private Log loggerError = LogFactory.getLog("userInfoLogError");
private Log loggerInfo = LogFactory.getLog("userInfoLogInfo");
4)自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关:
log4j.additivity.userInfoLog = false
它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方啦!注意这里的"userInfoLog"是你在程序中给logger起的那个自定义的名字!
如果你说,我只是不想同时输出这个日志到log4j.rootLogger所配置的logfile中,stdout里我还想同时输出呢!那也好办,如:
log4j.logger.userInfoLog=DEBUG, userLog, stdout
其他博客找的解决方法:
log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。
1)先看一个常见的log4j.properties文件,它是在控制台和daily.log文件中记录日志:
log4j.rootLogger=error,dailyLog,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.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
log4j.appender.dailyLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.dailyLog.File=../logs/daily.log
log4j.appender.dailyLog.Append=true
log4j.appender.dailyLog.Threshold=ERROR
log4j.appender.dailyLog.DatePattern='.'yyyy-MM-dd
log4j.appender.dailyLog.layout=org.apache.log4j.PatternLayout
log4j.appender.dailyLog.layout.ConversionPattern=%5p:%d - %m%n
2)如果想对不同的功能模块输出不同的文件,怎么操作?
如:
用户基础信息模块路径为:com.isoft.visa.baseinf
它下面有个类:com.isoft.visa.baseinf.service.impl.UserInfo
private Log log = LogFactory.getLog(UserInfo.class);
然后在log4j.properties中加入:
log4j.logger.com.isoft.visa.baseinf=info,userLog,stdout
log4j.appender.userLog=org.apache.log4j.FileAppender
log4j.appender.userLog.File=../logs/userinfo.log
log4j.appender.userLog.Append=true
log4j.appender.userLog.Threshold=info
log4j.appender.userLog.layout=org.apache.log4j.PatternLayout
log4j.appender.userLog.layout.ConversionPattern==%d %p [%c] - %m%n
注:也就是让com.isoft.visa.baseinf模块下所有的logger使用log4j.appender.userLog所做的配置。
3)自定义“别名”的使用,相当于2的变种。
同上模块:
private Log log = LogFactory.getLog("userInfoLog");
然后在log4j.properties中加入:
log4j.logger.userInfoLog=info,userLog,stdout
log4j.appender.userLog=org.apache.log4j.FileAppender
log4j.appender.userLog.File=../logs/userinfo.log
log4j.appender.userLog.Append=true
log4j.appender.userLog.Threshold=info
log4j.appender.userLog.layout=org.apache.log4j.PatternLayout
log4j.appender.userLog.layout.ConversionPattern==%d %p [%c] - %m%n
注:也就是在用logger时给它一个自定义的名字(如这里的"userInfoLog"),然后在log4j.properties中做出相应配置即可。,在这种模式下,即使在同一个类中也能定义多个不同输出的log.
在类中调用代码如下:
private Log loggerError = LogFactory.getLog("userInfoLogError");
private Log loggerInfo = LogFactory.getLog("userInfoLogInfo");
4)自定义的日志默认是同时输出到log4j.rootLogger所配置的日志中的,如何能只让它们输出到自己指定的日志中呢?别急,这里有个开关:
log4j.additivity.userInfoLog = false
它用来设置是否同时输出到log4j.rootLogger所配置的日志中,设为false就不会输出到其它地方啦!注意这里的"userInfoLog"是你在程序中给logger起的那个自定义的名字!
如果你说,我只是不想同时输出这个日志到log4j.rootLogger所配置的logfile中,stdout里我还想同时输出呢!那也好办,如:
log4j.logger.userInfoLog=DEBUG, userLog, stdout
发表评论
-
struts2升级到struts2.3.32(报错、找不到action)
2017-03-20 17:32 981struts2 低版本有漏洞问题,升级到struts2.3.3 ... -
mybatis 插件分页
2013-11-08 18:36 965Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录 ... -
中等数据量的数据去重
2013-09-05 10:54 622最近遇到去重的问题,在此写一下处理的方法! 场景:短信平台有 ... -
部署Openfire源码
2013-07-08 15:39 733部署Openfire源码 1. 获取O ... -
spring与mybatis三种整合方法
2012-09-28 13:42 851以下原文摘自 http://www.cnblogs.com/t ... -
java 获取客户端MAC地址
2012-07-05 17:53 1245从网上查找资料java/jsp获得客户端(IE)网卡MAC地址 ... -
sping bean 作用域
2012-07-02 19:47 922ingleton:返回bean的同一个 ... -
struts1中的不同的form配置形式
2010-08-12 13:56 11671.先看看我们以前使用FormBean的方式 继承Actio ... -
Java中用URLConnection和HttpsURLConnection访问的问题
2010-07-29 15:12 2212虽然用的不多,但是还是要收藏!!!积累中.... 在web应用 ... -
StringUtils工具类的常用方法
2010-07-29 14:11 743StringUtils 方法的操作对象是 java.lang. ... -
tomcat 热部署
2010-07-29 09:56 1264在tomcat中支持热部署有 ... -
tomcat部署多个项目
2010-07-21 19:53 17358最近有个项目需要在tomcat部署多个项目:(个人解决方案) ... -
删除集合重复的元素
2010-07-21 18:06 912import java.util.Arrays; im ... -
求两日期之间的天数
2010-07-21 17:59 9591. 以系统当前日期为起 ... -
Singleton 模式讲解
2010-07-21 17:56 992Singleton 模式的宗旨在于确保某个类只有一个实例,别且 ... -
最近面试中sql题
2010-07-10 21:14 1112一.SQL问答题 SELECT * FROM TABLE ... -
hibernate和ibatis
2010-07-05 21:07 757简介 iBATIS一词来源 ... -
oracle 锁概念
2010-07-05 18:38 1155希望能与大家共同分享。本人还是不太懂,但是还是收藏一下,以后摸 ... -
表单提交中Get和Post方式的区别
2010-07-05 14:09 963表单提交中Get和Post方式的区别有6点: 1. ge ... -
hibernate 中Criteria 和CriteriaSpecification 的应用
2010-07-02 16:51 2659设计上可以灵活的根据 ...
相关推荐
在“LOG4CPP 多个日志文件”的场景下,我们主要关注如何配置LOG4CPP以将日志输出到不同的文件,如DEBUG、NOTICE、WARNING、ERROR和CRITICAL级别分别对应不同的文件。 首先,理解LOG4CPP的基本架构至关重要。LOG4CPP...
通过使用Log4j,开发者可以非常灵活地控制日志信息的输出目的地(如控制台、文件、GUI组件、网络套接字服务器、NT事件记录器、UNIX Syslog守护进程等)、每条日志信息的格式以及日志级别(例如DEBUG、INFO、WARN、...
`log4sh`不仅支持打印到标准输出(控制台),还能够写入文件,甚至通过网络发送到远程服务器,实现了日志的多渠道输出,方便集中管理和分析。 4. **日志滚动与备份** 针对日志文件可能过大的情况,`log4sh`提供了...
比如在log4j.properties文件中,可以设置日志级别的阈值、指定输出目的地的Appender以及自定义输出格式。利用Log4j提供的类和接口,开发者可以轻松地实现日志记录和管理,使得程序运行的监控和问题追踪变得更加方便...
多线程和多进程写同一个日志的情况下,安全转档(转档就是把太大的日志重命名) 可以精确到微秒 如果一个程序默认只用一个分类输出,zlog提供了简单的调用包装dzlog MDC,一个log4j风格的键-值对的表,可以扩展用户...
总结来说,Linux环境下用C语言实现日志打印功能需要考虑日志级别、时间戳、文件操作、线程安全、格式化输出和输出位置等多个方面。通过精心设计和实现,我们可以构建出高效且易用的日志系统,为软件的稳定性和维护...
Log4j 是 Apache 软件基金会开发的一个开源日志框架,它允许程序员控制日志信息的输出目标,包括控制台、文件、GUI组件、套接字服务器、NT事件记录器和UNIX Syslog守护进程等。Log4j 提供了丰富的日志级别,如 DEBUG...
- `logs`目录:实际的日志文件将被输出到这里,可能包含多个子目录。 **4. 配置与使用** 在`log4cplus.properties`配置文件中,可以设置日志的输出格式、级别、过滤器以及最重要的,分目录策略。例如,可以通过以下...
3. **自定义日志库**:如压缩包中的`yyb-log-master`可能就是一个自定义的日志库,它可能提供了更高级的功能,如线程安全的输出、日志分类、过滤等功能,使得在多线程环境下能够更好地管理和查看日志。 4. **使用...
9. **日志格式化**:允许用户自定义日志的输出格式,比如是否包含线程ID、进程ID等信息。 10. **调试模式**:在调试模式下,可以输出更详细的日志,如堆栈跟踪信息,以便更好地定位问题。 在实现上述功能时,注意...
- **多进程支持**:在多进程环境中,每个进程可以有自己的日志文件,防止混淆。 - **网络日志**:支持通过网络发送日志到集中式日志服务器,便于大规模部署的监控。 7. **使用示例** - 基本用法:`Log::...
每个Logger可以附加多个Appender,这意味着日志消息可以同时被发送到不同的目的地。例如,将一个Console Appender添加到根Logger可以确保所有日志都被打印到控制台,而将一个File Appender附加到特定的Logger C,...
Log4j具有模块化的设计,可以适应各种日志需求,包括不同级别的日志(如DEBUG、INFO、WARN、ERROR、FATAL),以及通过配置文件来定制输出格式和目的地。此外,Log4j还支持自定义布局和过滤器,以满足特定的应用场景...
也可以自定义日志格式,以适应特定的需求,如添加线程ID、进程ID等信息。 在实际项目中,可以封装这个日志配置为一个函数或者类,以便在各个模块中方便地使用。例如,可以创建一个`init_logging`函数,接受日志...
2. **可定制的输出格式**:log4erl支持自定义日志输出格式,可以设置日期时间、模块名、函数名、线程ID等信息的显示方式,以满足不同场景的需求。 3. **日志目标的多样性**:除了常见的控制台输出,log4erl还支持将...
使用第三方库可以简化这些复杂性,提供更高级的功能,如自定义日志格式、配置文件、日志目标(如数据库、电子邮件、云存储)等。例如,log4net提供了灵活的日志配置和强大的日志管理功能。 总的来说,C#中打开并...
- **格式化输出**:允许用户自定义日志输出的格式,如添加时间戳、线程ID、进程ID等信息。 - **日志级别控制**:提供设置和过滤日志级别的功能,便于在不同场景下调整日志的详细程度。 - **日志归档**:将旧日志压缩...
标准库log通常将日志输出到控制台,而Go-log可能支持将日志输出到多个目的地,比如文件、网络、甚至日志服务(如Logstash)。此外,可能还可以配置输出过滤,例如只将`Error`及以上级别的日志写入文件,而将所有...