C++开源跨平台OJ系统判题核心FreeJudger(三)——log4cxx同时使用多个日志文件
来源:互联网 发布:mac os 10.12镜像下载 编辑:程序博客网 时间:2024/05/16 08:33
C++开源跨平台OJ系统判题核心FreeJudger(三)——log4cxx同时使用多个日志文件
By 马冬亮(凝霜 Loki)
一个人的战争(http://blog.csdn.net/MDL13412)
前置知识
- log4cxx可以使用配置文件进行设置,并且其设置方式与log4j兼容;
- log4cxx库对日志流设置,只需更改配置文件中的appender属性;
- log4cxx支持Logger继承机制,默认会继承父Logger的appender,由于要将日志流输出到多个文件中,因此需要将子Logger的继承属性设置为false.
配置子Logger
为了最大程度的灵活性,log4cxx引入了子Logger这个概念,即拥有与父Logger不同的行为,和编程语言中的OOP概念一致。
下面是在配置文件中定义一个子Logger的代码,其中ap0是logger0使用的appender:
log4j.logger.logger0 = TRACE, ap0
设置子Logger不继承父Logger的appender:
log4j.additivity.logger0=false设置子Logger所使用的日志文件,下述代码将logger0的日志文件设定为当前程序目录下的0.log:log4j.appender.ap0.File=./0.log
在程序中获取子Logger实例
首先是加载配置文件:
log4cxx::PropertyConfigurator::configure(配置文件名称);获取子Logger实例:log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger(子Logger名[例如上文中的"logger0"]);
FreeJudger项目中使用的完整配置文件
下述代码配置了8个子Logger,用于FreeJudger项目中判题线程的日志:
log4j.additivity.gather = falselog4j.rootLogger=TRACElog4j.logger.logger0 = TRACE, ap0log4j.logger.logger1 = TRACE, ap1log4j.logger.logger2 = TRACE, ap2log4j.logger.logger3 = TRACE, ap3log4j.logger.logger4 = TRACE, ap4log4j.logger.logger5 = TRACE, ap5log4j.logger.logger6 = TRACE, ap6log4j.logger.logger7 = TRACE, ap7log4j.logger.logger8 = TRACE, ap8log4j.additivity.logger0=falselog4j.additivity.logger1=falselog4j.additivity.logger2=falselog4j.additivity.logger3=falselog4j.additivity.logger4=falselog4j.additivity.logger5=falselog4j.additivity.logger6=falselog4j.additivity.logger7=falselog4j.additivity.logger8=falselog4j.appender.logfile.encoding=UTF-8log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%nlog4j.appender.R.MaxFileSize=100KBlog4j.appender.ap0=org.apache.log4j.RollingFileAppenderlog4j.appender.ap0.ImmediateFlush=true log4j.appender.ap0.File=./0.loglog4j.appender.ap0.MaxBackupIndex=10log4j.appender.ap0.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap0.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap1=org.apache.log4j.RollingFileAppenderlog4j.appender.ap1.ImmediateFlush=true log4j.appender.ap1.File=./1.loglog4j.appender.ap1.MaxBackupIndex=10log4j.appender.ap1.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap1.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap2=org.apache.log4j.RollingFileAppenderlog4j.appender.ap2.ImmediateFlush=true log4j.appender.ap2.File=./2.loglog4j.appender.ap2.MaxBackupIndex=10log4j.appender.ap2.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap2.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap3=org.apache.log4j.RollingFileAppenderlog4j.appender.ap3.ImmediateFlush=true log4j.appender.ap3.File=./3.loglog4j.appender.ap3.MaxBackupIndex=10log4j.appender.ap3.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap3.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap4=org.apache.log4j.RollingFileAppenderlog4j.appender.ap4.ImmediateFlush=true log4j.appender.ap4.File=./4.loglog4j.appender.ap4.MaxBackupIndex=10log4j.appender.ap4.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap4.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap5=org.apache.log4j.RollingFileAppenderlog4j.appender.ap5.ImmediateFlush=true log4j.appender.ap5.File=./5.loglog4j.appender.ap5.MaxBackupIndex=10log4j.appender.ap5.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap5.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap6=org.apache.log4j.RollingFileAppenderlog4j.appender.ap6.ImmediateFlush=true log4j.appender.ap6.File=./6.loglog4j.appender.ap6.MaxBackupIndex=10log4j.appender.ap6.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap6.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap7=org.apache.log4j.RollingFileAppenderlog4j.appender.ap7.ImmediateFlush=true log4j.appender.ap7.File=./7.loglog4j.appender.ap7.MaxBackupIndex=10log4j.appender.ap7.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap7.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%nlog4j.appender.ap8=org.apache.log4j.RollingFileAppenderlog4j.appender.ap8.ImmediateFlush=true log4j.appender.ap8.File=./8.loglog4j.appender.ap8.MaxBackupIndex=10log4j.appender.ap8.layout=org.apache.log4j.PatternLayoutlog4j.appender.ap8.layout.ConversionPattern=%5p %d{HH:mm:ss} -- %m%n
欢迎加入
群117975329,验证信息CSDN。
主要维护人:
- 周宝 you_lan_hai@foxmail.com
- 马冬亮 mdl2009@vip.qq.com
- C++开源跨平台OJ系统判题核心FreeJudger(三)——log4cxx同时使用多个日志文件
- C++开源跨平台OJ系统判题核心—— FreeJudger(一)
- C++开源跨平台OJ系统判题核心FreeJudger(二)——logger设计
- C++日志系统log4cxx使用总结
- C++日志系统log4cxx使用总结
- C++日志系统log4cxx使用总结
- C++日志系统log4cxx使用总结
- C++日志系统log4cxx使用总结
- C++日志系统log4cxx使用总结
- log4cxx--使用多个logger
- Log4net同时写入多个日志文件
- log4cxx第三篇----使用多个logger
- log4cxx第三篇----使用多个logger
- Dev-C++:同时编译多个文件
- 【C++】log4cxx相关使用
- 使用VI同时编辑多个文件
- 使用VI同时编辑多个文件
- 使用ajaxfileupload同时上传多个文件
- 小游戏系列算法之五广度优先搜索,双向广搜,八数码,华容道
- 挖掘机效果(SHADER无阴影)2013.2.8
- Listview异步加载图片之优化篇(有图有码有解释)
- JS学习 面向对象 2
- 关于LCD以及BMP和RGB565
- C++开源跨平台OJ系统判题核心FreeJudger(三)——log4cxx同时使用多个日志文件
- UVA 10626 Buying Coke
- POJ 2185 KMP
- SQL Server 辅助软件系列
- 数据的加密与解密
- sqlserver数据库的备份与还原
- UVA 10723 Cyborg Genes
- Axure RP:页面原型制作工具
- UVA 662 Fast Food