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对象 ...
随机推荐
- Mac、Linux更换命令行svn diff为P4Merge、vimdiff
2015-01-21 21:25:52 这里先把那个程序员大神的博客地址贴一下(PS:大神,我不是为了抄袭哦,真是怕自己忘记了),http://www.ccvita.com/445.html,里面还有 ...
- Activity、Task、应用和进程
http://www.cnblogs.com/franksunny/archive/2012/04/17/2453403.html Activity.Task.应用和进程 为了阅读方便,将文档转成pd ...
- C++学习笔记27:异常处理机制
一.异常处理机制基础 异常的定义 程序中可以检测的运行不正常的情况 异常处理的基本流程 某段程序代码在执行操作时发生特殊情况,引发一个特定的异常 另一段程序代码捕获该异常并处理它 二.异常的引发 th ...
- Fiddler2 主菜单
Fiddler2 主菜单 六个主菜单分别是: 文件(File) Capture Traffic ——启用捕获功能,快捷键 F12 此功能的开启/关闭状态,程序安装后默认是开启的.可以在 Fiddler ...
- NT6 HDD Installer(硬盘装系统工具)装系统
32位系统上使用虚拟光驱装不了64位的,使用NT6就可以.
- 优先队列 :Priority Queue
PriorityQueue是从JDK1.5开始提供的新的数据结构接口,它是一种基于优先级堆的极大优先级队列.优先级队列是不同于先进先出队列的另一种队列. 每次从队列中取出的是具有最高优先权的元素.如果 ...
- 【转载】Restarting an analysis in ANSYS
原文地址:http://blog.sina.com.cn/s/blog_4b764640010168ru.html 这是自己最近做的一个例子,一是为了感谢okok论坛给与我的很大的帮助,二是起到抛 ...
- ext.net与extjs的关系
一.在客户端,ext.net中可以使用extjs的语法. 如发送ajax请求, Ext.Ajax.request({ url: 'Common/getNode', ...
- OpenStack Mitaka安装
http://egon09.blog.51cto.com/9161406/1839667 前言: openstack的部署非常简单,简单的前提建立在扎实的理论功底,本人一直觉得,玩技术一定是理论指导实 ...
- Python线程通信
subprocess 作用 模块用于生产新的进程,连接到其输入.输出.错误管道,并获取其返回值 1. 如何使用subprocess模块 启动子进程的推荐方法是使用以下方便功能. 对于更高级的用例,当这 ...