- 浏览: 63878 次
- 性别:
- 来自: 上海
文章分类
最新评论
最近在用多个线程走多个任务,但是日志用一个文件总有的线程输出不了。
其他博客找的解决方法:
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 948struts2 低版本有漏洞问题,升级到struts2.3.3 ... -
mybatis 插件分页
2013-11-08 18:36 961Mybatis的分页功能很弱,它是基于内存的分页(查出所有记录 ... -
中等数据量的数据去重
2013-09-05 10:54 601最近遇到去重的问题,在此写一下处理的方法! 场景:短信平台有 ... -
部署Openfire源码
2013-07-08 15:39 727部署Openfire源码 1. 获取O ... -
spring与mybatis三种整合方法
2012-09-28 13:42 847以下原文摘自 http://www.cnblogs.com/t ... -
java 获取客户端MAC地址
2012-07-05 17:53 1235从网上查找资料java/jsp获得客户端(IE)网卡MAC地址 ... -
sping bean 作用域
2012-07-02 19:47 916ingleton:返回bean的同一个 ... -
struts1中的不同的form配置形式
2010-08-12 13:56 11661.先看看我们以前使用FormBean的方式 继承Actio ... -
Java中用URLConnection和HttpsURLConnection访问的问题
2010-07-29 15:12 2208虽然用的不多,但是还是要收藏!!!积累中.... 在web应用 ... -
StringUtils工具类的常用方法
2010-07-29 14:11 740StringUtils 方法的操作对象是 java.lang. ... -
tomcat 热部署
2010-07-29 09:56 1260在tomcat中支持热部署有 ... -
tomcat部署多个项目
2010-07-21 19:53 17354最近有个项目需要在tomcat部署多个项目:(个人解决方案) ... -
删除集合重复的元素
2010-07-21 18:06 909import java.util.Arrays; im ... -
求两日期之间的天数
2010-07-21 17:59 9591. 以系统当前日期为起 ... -
Singleton 模式讲解
2010-07-21 17:56 992Singleton 模式的宗旨在于确保某个类只有一个实例,别且 ... -
最近面试中sql题
2010-07-10 21:14 1110一.SQL问答题 SELECT * FROM TABLE ... -
hibernate和ibatis
2010-07-05 21:07 752简介 iBATIS一词来源 ... -
oracle 锁概念
2010-07-05 18:38 1155希望能与大家共同分享。本人还是不太懂,但是还是收藏一下,以后摸 ... -
表单提交中Get和Post方式的区别
2010-07-05 14:09 959表单提交中Get和Post方式的区别有6点: 1. ge ... -
hibernate 中Criteria 和CriteriaSpecification 的应用
2010-07-02 16:51 2657设计上可以灵活的根据 ...
相关推荐
通过使用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`及以上级别的日志写入文件,而将所有...
通常,我们会使用如`log4j`、`logback`这样的日志框架来生成日志,而解析这些日志文件则需要自定义的解析器。解析器通常会通过正则表达式或者自定义的逻辑来识别日志文件中的关键信息,如时间戳、级别、类名、方法名...