#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 对象的更多相关文章

  1. Spring AOP 源码分析 - 创建代理对象

    1.简介 在上一篇文章中,我分析了 Spring 是如何为目标 bean 筛选合适的通知器的.现在通知器选好了,接下来就要通过代理的方式将通知器(Advisor)所持有的通知(Advice)织入到 b ...

  2. spring aop 源码分析(三) @Scope注解创建代理对象

    一.源码环境的搭建: @Component @Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON,proxyMode = ScopedP ...

  3. 死磕Spring之AOP篇 - Spring AOP自动代理(三)创建代理对象

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  4. 创建javaScript对象的方法

    一.工厂模式 function person (name,age) { var p=new Object(); p.name=name; p.age=age; p.showMessage=functi ...

  5. .net下灰度模式图像在创建Graphics时出现:无法从带有索引像素格式的图像创建graphics对象 问题的解决方案。

    在.net下,如果你加载了一副8位的灰度图像,然后想向其中绘制一些线条.或者填充一些矩形.椭圆等,都需要通过Grahpics.FromImage创建Grahphics对象,而此时会出现:无法从带有索引 ...

  6. win7 装了VB虚拟机 开始挺好用 后来突然就打不开了 提示如下错误:(如图)创建 COM 对象失败.

    创建 COM 对象失败. 应用程序将被中断. Start tag expected, '<' not found. Location: 'C:\Users\Mike/.VirtualBox\Vi ...

  7. 在这个看脸的世界,该如何优雅的创建JS对象

    Javascript是一门解释型的语言,是基于对象的,严格来说并不怎么符合的面向对象的标准,显著的特点就是函数就是“一等对象”,与传统的面向对象语言不同的时,Javascript有“一千种”方法来创建 ...

  8. java 创建string对象机制 字符串缓冲池 字符串拼接机制

    对于创建String对象的机制,在这一过程中涉及的东西还是值得探究一番的. 首先看通过new String对象和直接赋值的方式有什么区别,看如下代码: public static void main( ...

  9. 创建XMLHttpRequest对象

    创建XMLHttpRequest对象 XMLHttpRequest对象: 用于在后台与服务器交换数据,可以在不重新加载整个页面的情况下,对页面的部分内容进行更新. 创建XMLHttpRequest对象 ...

随机推荐

  1. c51跑马灯

    ORG 0000HMOV 20H, #0FFHMOV 21H, #0FDHMOV 22H, #0FBHMOV 23H, #0F7HMOV 24H, #0EFHMOV 25H, #0DFHMOV 26H ...

  2. jquery基础知识学习笔记

    jquery是一个js库/常用版本是jjquery-1.7.2.js/这个版本主要是用来做开放用途 做产品的时候是用它的min版本.玩jquery的时候,不管干啥都要花钱(美元)   注意点: 1.s ...

  3. Android中ExpandableListView的使用

    ExpandableListView是Android中可以实现下拉list的一个控件,具体的实现方法如下: 首先:在layout的xml文件中定义一个ExpandableListView < L ...

  4. java异常知识点整理

    异常处理机制:捕获异常(try-catch-finally)和声明抛弃异常(throw); 所有的异常类都直接或者间接地继承于Throwable类: java异常分为可查异常和不可查异常两种.可查异常 ...

  5. IOS 网络请求

    技术交流新QQ群:414971585 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST.今天来看 ...

  6. Linux运维人员如何学习python编程

    Linux运维人员如何学习python编程 从不会写代码,到自己独立能写代码解决问题 .这个问题很重要!盲目学习所谓的项目,最后 还是不会自己写代码解决问题.首先解决了独立能写代码解决问题,再通过项目 ...

  7. string.join(iterable)

    str.join(iterable) Return a string which is concatenation the  of the strings in the iterable iterab ...

  8. Serializable unordered set

    Serializable unordered set 可序列化哈希set #include <boost/algorithm/string/predicate.hpp> #include ...

  9. Ext.Net 学习随笔 001 安装Ext.Net

    Ext.Net版本:4.1.0 Ext.Net官网:ext.net Ext.Net官方演示:mvc.ext.net Ext.Net MVC Example 下载:github.com/extnet/E ...

  10. kuangbin_SegTree D (POJ 2528)

    讲道理我之前暂时跳过染色的题是因为总觉得有什么很高端的算法来query 直到我做了F题(ZOJ 1610)才发现就是个暴力统计.....也对 也就几万个长度单位而已.... F就不po上来了 选了有点 ...