说起日志系统,不得不提大名鼎鼎的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. UITextView 添加 pleaceholder

    UITextView 默认没有 pleaceholder属性: 我们可以通过多种方式添加 在UITextView的代理方法中写 - (void)textViewDidBeginEditing:(UIT ...

  2. android安装应用程序工具类

    /** * 安装APK文件 *@param APK文件 *Version: *author:YangQuanqing */ private void installAPK(File file){ // ...

  3. Spring NamedParameterJdbcTemplate详解

    NamedParameterJdbcTemplate和JdbcTemplate功能基本差不多.使用方法也类型.下面具体看下代码. db.properties jdbc.user=root jdbc.p ...

  4. 发布WebService 1.1

    webservice1.1是基于jdk发布的 package cn.itcast.service01; import javax.jws.WebService; import javax.xml.ws ...

  5. 【LeetCode】66. Plus One (2 solutions)

    Plus One Given a non-negative number represented as an array of digits, plus one to the number. The ...

  6. 【LeetCode】69. Sqrt(x) (2 solutions)

    Sqrt(x) Implement int sqrt(int x). Compute and return the square root of x. 解法一:牛顿迭代法 求n的平方根,即求f(x)= ...

  7. JavaScript的9个陷阱

    来自Nine Javascript Gotchas, 以下是JavaScript容易犯错的九个陷阱.虽然不是什么很高深的技术问题,但注意一下,会使您的编程轻松些,即所谓make life easier ...

  8. Android Design与Holo Theme详解

    在 国内,有个很有意思的现状.一方面,几个国内最大的公司/企业的客户端/应用依旧冥顽不灵,丝毫不愿意遵循 Android Design,以各种扯淡的理由坚持使用 iOS UI 或者 Metro UI, ...

  9. REST开放接口生成文档工具之apidoc

    一.安装node.js环境 感谢阿里云,下载的链接http://npm.taobao.org/mirrors/node/latest-v6.x/ 二.安装apidoc npm install apid ...

  10. 编译安装PHP7并安装Redis扩展Swoole扩展(未实验)

    用PECL自动安装Redis扩展.Swoole扩展 pecl install redis pecl install swool 编译安装PHP7并安装Redis扩展Swoole扩展 在编译php7的机 ...