说起日志系统,不得不提大名鼎鼎的Log4j。特别是使用Java的人们,能够说是无人不知无人不晓无人不用。

Log4j以其简单的使用方式(引入一个jar包。一行代码就可以调用)。灵活(可通过配置文件任意配置),功能强大(多个级别。可配置多个输出目的地,Console,File。系统日志。远端的LogServer等等,可订制日志格式,自己主动产生,删除日志文件)等等等等特性,一直是Java日志系统的首选。

1.Log4j的C++版本号Log4cplus

上面说到,日志在如今的系统里不可缺少。Java有功能强大的Log4j能够使用,作为最重要变成语言之中的一个的C++有什么选择呢?

幸运的是。有一些大牛非常早之前就发现了这个问题,他们仿照Log4J。使用C++语言开发了一套日志系统Log4cplus,Log4cplus的目的非常明白。打造C++版的Log4j。并且最重要的是Log4cplus是开源的。

2.使用简单介绍

1)下载http://sourceforge.net/projects/log4cplus/

2)Log4j是一个C++库,编译以后就可以使用。同一时候log4cplus支持windows和linux:

windows下:打开根文件夹下的msvc10以下的vsproject。编译就可以。

Linux下:configure, make

3)使用

a)最简单的使用方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include
<log4cplus/logger.h> 
#include
<log4cplus/configurator.h> 
#include
<iomanip> 
   
using

namespace

log4cplus; 
   
int 
main() 
    BasicConfigurator
config; 
    config.configure(); 
   
    Logger
logger = Logger::getInstance(
"main"); 
    LOG4CPLUS_WARN(logger, "Hello,
World!"
); 
    return

}

b)可订制的方式

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*   
严格实现步骤1-6,appender输出到屏幕, 当中的布局格式和LogLevel后面会详解。*/
 
#include
<log4cplus logger.h=""></log4cplus> 
#include
<log4cplus consoleappender.h=""></log4cplus> 
#include
<log4cplus layout.h=""></log4cplus>    
using

namespace

log4cplus; 
using

namespace

log4cplus::helpers;    
int

main(){ 
    /*
step 1: Instantiate an appender object */
     
    SharedObjectPtr
_append (
new

ConsoleAppender());     
    _append->setName("append
for test"
);    
    /*
step 2: Instantiate a layout object */
     
    std::string
pattern = 
"%d{%m/%d/%y
%H:%M:%S}  - %m [%l]%n"
;     
    std::auto_ptr
_layout(
new

PatternLayout(pattern));    
    /*
step 3: Attach the layout object to the appender */
     
    _append->setLayout(
_layout );    
    /*
step 4: Instantiate a logger object */
     
    Logger
_logger = Logger::getInstance(
"test");    
    /*
step 5: Attach the appender object to the logger  */
    
    _logger.addAppender(_append);    
    /*
step 6: Set a priority for the logger  */
     
    _logger.setLogLevel(ALL_LOG_LEVEL);    
     /*
log activity */
     
    LOG4CPLUS_DEBUG(_logger, "This
is the FIRST log message..."
)     
   sleep(1);     
   LOG4CPLUS_WARN(_logger, "This
is the SECOND log message..."
)    
   return

0; 
}

4)配置

Log4cplus配置基本与log4J同样。

以下是一个样例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
log4cplus.rootLogger=DEBUG,
STDOUT, ALL_MSGS 
   
   
log4cplus.appender.STDOUT=log4cplus::ConsoleAppender 
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout 
#log4cplus.appender.STDOUT.layout.ConversionPattern=%d{%m/%d/%y
%H:%M:%S} [%t] %-5p %c{2} %%%x%% - %m [%l]%n 
log4cplus.appender.STDOUT.layout.ConversionPattern=[%-5p
%d{%y-%m-%d %H:%M:%S}] [%l]%n%m%n%n 
   
   
#设置日志追加到文件尾 
log4cplus.appender.ALL_MSGS=log4cplus::RollingFileAppender   
   
#设置日志文件大小 
log4cplus.appender.ALL_MSGS.MaxFileSize=100MB 
   
#设置生成日志最大个数 
log4cplus.appender.ALL_MSGS.MaxBackupIndex=10 
   
#设置输出日志路径 
log4cplus.appender.ALL_MSGS.File=log/test.log 
log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout 
#设置日志打印格式 
#log4cplus.appender.ALL_MSGS.layout.ConversionPattern=|%D:%d{%Q}|%p|%t|%l|%m|%n 
log4cplus.appender.ALL_MSGS.layout.ConversionPattern=[%-5p
%d{%y-%m-%d %H:%M:%S}] [%l]%n%m%n%n 
#匹配同样日志级别,仅仅有debug日志才输入到该文件里 
#log4cplus.appender.ALL_MSGS.filters.1=log4cplus::spi::LogLevelMatchFilter 
#log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelToMatch=DEBUG 
#log4cplus.appender.DEBUG_MSGS.filters.1.AcceptOnMatch=true 
#log4cplus.appender.DEBUG_MSGS.filters.2=log4cplus::spi::DenyAllFilter

log4cplus基本用法的更多相关文章

  1. 转载的log4cplus使用指南

    以下转载的log4cplus使用指南的版本可能不是最新,仅作参考了解.应以最新安装包中的示例代码为准. 目    录1 Log4cplus简介    52 安装方法    53 主要类说明    64 ...

  2. Log4cplus使用指南

    1.  Log4cplus简介 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统,受Apache Software License保护,作者是Tad E. Smith ...

  3. How to use Log4cplus

    Introduction Log4cplus is derived by the popular Log4j written in java.<br>This tutorial show ...

  4. Log4cplus入门

    Log4cplus使用指南 1.  Log4cplus简单介绍 log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护 ...

  5. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  6. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  7. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  8. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  9. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

随机推荐

  1. 分享六个基于Bootstrap的实用开发教程和模板演示

    关于Bootstrap,相信大家一定不陌生,它已经成为现在主流产业的一个重要工具,Bootstrap提供了优雅的HTML和CSS规范,它基于jQuery框架开发的,它在jQuery框架的基础上进行了更 ...

  2. Php自动备份数据库实现方法

    然后再服务器开启 定时任务执行这个方法即可.

  3. MySQL数据库和实例简介

    MySQL 单进程多线程,也就是说MySQL实例在系统上表现就是一个进程 该架构类似于SQL Server和Windows版本的Oracle MySQL数据库是由一些列物理文件组成.类似于frm.MY ...

  4. MySQL 工具

    MySQL 客户端工具: 1:mysql       #mysql的功能和Oracle的sqlplus一样,它为用户提供一个命令行接口来管理Mysql服务器. 2:mysqladmin #mysqla ...

  5. com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ExceptionId"

    com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "Exception ...

  6. Python 爬虫实例(5)—— 爬取爱奇艺视频电视剧的链接(2017-06-30 10:37)

    1. 我们找到  爱奇艺电视剧的链接地址 http://list.iqiyi.com/www/2/-------------11-1-1-iqiyi--.html 我们点击翻页发现爱奇艺的链接是这样的 ...

  7. jquery经常使用操作

    页面load方法 $().ready(function() { }) div隐藏操作 // div是否隐藏 function isHideMenu(){ return $("#menuCon ...

  8. sh 不显示当前的路径

    linux中sh是链接到bash上的,所以sh与bash在功能上是没有区别的 只是sh不显示路径!!! sh-4.1# cd /usr/local/src sh-4.1# pwd /usr/local ...

  9. Proguard语法及常用proguard.cfg代码段

    本文主要ProGuard常用语法.标准proguard.cfg文件内容.常用proguard.cfg代码段及proguard与log level结合解决debug模式日志问题. 1.ProGuard的 ...

  10. Swift 3.1 的一些新特性

    Swift 3.1 的一些新特性   推荐序 本文来自泊学的投稿,介绍了 Swift 3.1 的新特性,感谢泊学授权发表.以下为文章正文. 正文 Apple 终于发布了Xcode 8.3以及Swift ...