log4cplus 直接创建logger 对象
#include <log4cplus/loggingmacros.h> #include <log4cplus/fileappender.h> #include <log4cplus/layout.h> #include <log4cplus/consoleappender.h> #include <log4cplus/logger.h> #include <log4cplus/configurator.h> using namespace log4cplus; using namespace log4cplus::helpers; void CreateLogConsole(const char *strLogName) { // 1、生成一个appender 对象 SharedAppenderPtr pConsoleAppender(new ConsoleAppender()); // 2、生成layout 对象并绑定到appender std::auto_ptr<Layout> pLayout(new SimpleLayout()); pConsoleAppender->setLayout(pLayout); // 3、生成logger 对象 Logger logSuyh = Logger::getInstance(LOG4CPLUS_TEXT(strLogName)); // 4、设置Logger 优先级 logSuyh.setLogLevel(ALL_LOG_LEVEL); // 5、将需要关联的Logger 的Appender 添加到Logger 上 logSuyh.addAppender(pConsoleAppender); // 6、使用Logger LOG4CPLUS_ERROR(logSuyh, "Console self suyh.log"); LOG4CPLUS_ERROR_FMT(logSuyh, , "string text."); } void CreateLogFile(const char *strLogName, const char *strLogDir, const char *strLogFile) { // 1、生成一个appender 对象 MIFileAppender *miAppender = new MIFileAppender(LOG4CPLUS_TEXT(strLogDir)); miAppender->init(strLogFile, ); SharedAppenderPtr pAppender(miAppender); // 2、生成layout 对象并绑定到appender std::auto_ptr<Layout> pLayout(new SimpleLayout()); pAppender->setLayout(pLayout); // 3、生成logger 对象 Logger logSuyh = Logger::getInstance(LOG4CPLUS_TEXT(strLogName)); // 4、设置Logger 优先级 logSuyh.setLogLevel(ALL_LOG_LEVEL); // 5、将需要关联的Logger 的Appender 添加到Logger 上 // 这里可以添加多个appender ,这样只要用该strLogName 的Logger 对象输出的日志将会 // 同时输出到所有的appender 指定的文件或者控制台上 logSuyh.addAppender(pAppender); // 6、使用Logger LOG4CPLUS_ERROR(logSuyh, "Log file self suyh.log"); } int main() { CreateLogFile("suyh_01", "suyh_log_dir", "log_file_01"); CreateLogFile("suyh_02", "suyh_log_dir", "log_file_02"); CreateLogFile("suyh_03", "suyh_log_dir", "log_file_03"); log4cplus::Logger logSuyh01 = log4cplus::Logger::getInstance("suyh_01"); log4cplus::Logger logSuyh02 = log4cplus::Logger::getInstance("suyh_02"); log4cplus::Logger logSuyh03 = log4cplus::Logger::getInstance("suyh_03"); LOG4CPLUS_INFO(logSuyh01, "log4cplus suyh01 log text..."); LOG4CPLUS_INFO(logSuyh02, "log4cplus suyh02 log text..."); LOG4CPLUS_INFO(logSuyh03, "log4cplus suyh03 log text..."); ; }
log4cplus 直接创建logger 对象的更多相关文章
- Spring AOP 源码分析 - 创建代理对象
1.简介 在上一篇文章中,我分析了 Spring 是如何为目标 bean 筛选合适的通知器的.现在通知器选好了,接下来就要通过代理的方式将通知器(Advisor)所持有的通知(Advice)织入到 b ...
- spring aop 源码分析(三) @Scope注解创建代理对象
一.源码环境的搭建: @Component @Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON,proxyMode = ScopedP ...
- 死磕Spring之AOP篇 - Spring AOP自动代理(三)创建代理对象
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...
- 创建javaScript对象的方法
一.工厂模式 function person (name,age) { var p=new Object(); p.name=name; p.age=age; p.showMessage=functi ...
- .net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。
在.net下,如果你加载了一副8位的灰度图像,然后想向其中绘制一些线条.或者填充一些矩形.椭圆等,都需要通过Grahpics.FromImage创建Grahphics对象,而此时会出现:无法从带有索引 ...
- win7 装了VB虚拟机 开始挺好用 后来突然就打不开了 提示如下错误:(如图)创建 COM 对象失败.
创建 COM 对象失败. 应用程序将被中断. Start tag expected, '<' not found. Location: 'C:\Users\Mike/.VirtualBox\Vi ...
- 在这个看脸的世界,该如何优雅的创建JS对象
Javascript是一门解释型的语言,是基于对象的,严格来说并不怎么符合的面向对象的标准,显著的特点就是函数就是“一等对象”,与传统的面向对象语言不同的时,Javascript有“一千种”方法来创建 ...
- java 创建string对象机制 字符串缓冲池 字符串拼接机制
对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...
- 创建XMLHttpRequest对象
创建XMLHttpRequest对象 XMLHttpRequest对象: 用于在后台与服务器交换数据,可以在不重新加载整个页面的情况下,对页面的部分内容进行更新. 创建XMLHttpRequest对象 ...
随机推荐
- Source Insight 常用设置和快捷键大全
Source Insight 常用设置和快捷键大全 退出程序 : Alt+F4 重画屏幕 : Ctrl+Alt+Space 完成语法 : Ctrl+E 复制一行 : Ctrl+K 恰好复制该位置右边的 ...
- Bootstrap模态弹出窗
Bootstrap模态弹出窗有三种方式: 1.href触发模态弹出窗元素: <a class="btn btn-primary" data-toggle="moda ...
- (转) Spring框架笔记(二十五)——NamedParameterJdbcTemplate与具名参数(转)
在经典的 JDBC 用法中, SQL 参数是用占位符 ? 表示,并且受到位置的限制. 定位参数的问题在于, 一旦参数的顺序发生变化, 就必须改变参数绑定. 在 Spring JDBC 框架中, 绑定 ...
- IO流一行一行读取TXT文件
我们在开发或者测试的时候,往往会用到读取本地txt文件内容来处理数据的情况.下面是读取本地txt文件内容,是一行一行读取.如下列txt例子 小明 20 小红 20 小亮 20 下面是代码: publi ...
- thinkphp在模型中自动完成session赋值
相信用过thinkphp的用户都知道thinkphp的模型可以完成很多辅助功能,比 如自动验证.自动完成等,今天在开发中遇到自动完成中需要获取session值 然后自动赋值的功能,具体看代码:clas ...
- rpm 软件管理
rpm包 安装,查询,卸载,升级,校验数据库的重建等工作 1.安装rpm -i /PATH/TO/PACKAGE_FILE -h: 以#显示进度:每个#表示2%; -v: 显示详细过程 -vv: 更 ...
- PHP中的运算符---算术运算符、逻辑运算符、赋值运算符、比较运算符
1.算术运算符 常见的算术运算符 运算类型 运算符 举例 结果 取反运算 - -$a 返回$a的负值 加法运算 + $a + $b 返回$a与$b的和 减法运算 - $a - $b 返回$a与$b的差 ...
- Eplan简单教程
鉴于AUTOCAD画电路图比较繁琐而且手动添加关联参考错误率较高,而EPLAN画电路图确实效率要高许多,也更规范.过年正好有点时间,把我这段时间学EPLAN的一些经验总结了一下,有兴趣可以看看,也省得 ...
- [课程设计]Scrum 1.7 多鱼点餐系统开发进度
[课程设计]Scrum 1.7 多鱼点餐系统开发进度(点餐菜式内容添加及美化) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- linux KERNEL 问题
http://stackoverflow.com/questions/9305992/linux-threads-and-process 深入 Linux 的进程优先级(vruntime) https ...