開源日誌系統 log4cplus 二

2021-04-12 16:17:01 字數 3821 閱讀 7887

本文介紹了使用log4cplus有六個步驟,並提供了一些例子引導你了解log4cplus的基本使用。

### 基本使用 ###

使用log4cplus有六個基本步驟:
下面通過一些例子來了解log4cplus的基本使用。
using namespace log4cplus;

using namespace log4cplus::helpers;

/* step 2: instantiate a layout object */

std::string pattern = "%d  - %m [%l]%n";

std::auto_ptr

_layout(new patternlayout(pattern));

/* step 4: instantiate a logger object */

logger _logger = logger::getinstance("test");

/* 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;

}

輸出結果:

10/14/04 09:06:24  - this is the first log message... [main.cpp:31]

10/14/04 09:06:25  - this is the second log message... [main.cpp:33]

using namespace log4cplus;

using namespace log4cplus::helpers;

/* step 4: instantiate a logger object */

logger _logger = logger::getinstance("test");

/* log activity */

log4cplus_debug(_logger, "this is the first log message...")

sleep(1);

log4cplus_warn(_logger, "this is the second log message...")

return 0;

}

輸出結果:

debug - this is the first log message...

warn - this is the second log message...

/* step 4: instantiate a logger object */

logger _logger = logger::getinstance("test");

/* log activity */

log4cplus_trace(_logger, "this is"  << " just a t" << "est." << std::endl)

log4cplus_debug(_logger, "this is a bool: " << true)

log4cplus_info(_logger, "this is a char: " << 'x')

log4cplus_warn(_logger, "this is a int: " << 1000)

log4cplus_error(_logger, "this is a long(hex): " << std::hex << 100000000)

log4cplus_fatal(_logger, "this is a double: "  << std::setprecision(15)  << 1.2345234234)

return 0;

}

輸出結果:

debug - this is a bool: 1

info - this is a char: x

warn - this is a int: 1000

error - this is a long(hex): 5f5e100

fatal - this is a double: 1.2345234234

using namespace log4cplus::helpers;
void printmsgs(void)

int main()

輸出結果:

entering printmsgs()...

log4cplus:warn this is a warning...

log4cplus:error this is a error...

exiting printmsgs()...

turning on debug...

entering printmsgs()...

log4cplus: this is a debug statement...

log4cplus:warn this is a warning...

log4cplus:error this is a error...

exiting printmsgs()...

turning on quiet mode...

entering printmsgs()...

exiting printmsgs()...

需要指出的是,輸出資訊中總是包含"log4cplus:"字首,有時候會感覺不爽,這是因為loglog在實現時候死定了要這麼寫:
loglog::loglog()

: mutex(log4cplus_mutex_create),

debugenabled(false),

quietmode(false),

prefix( log4cplus_text("log4cplus: ") ),

warn_prefix( log4cplus_text("log4cplus:warn ") ),

err_prefix( log4cplus_text("log4cplus:error ") )

你可以把這些字首換成自己看著爽的提示符號,然後重新編譯,hihi。除非萬不得已或者實在鬱悶的不行,否則還是不要這樣幹。

〖例5〗

/**/

#include 

<

log4cplus

/logger.h

>

#include 

<

log4cplus

/>

using

namespace

log4cplus;

intmain()

return0;

}

輸出結果(test.log檔案):
debug - entering loop #0end line #

debug - entering loop #1end line #

debug - entering loop #2end line #

debug - entering loop #3end line #

debug - entering loop #4end line #

開源日誌系統 log4cplus 七

經過短暫的熟悉過程,log4cplus已經被成功應用到了我的專案中去了,效果還不錯,除了上文提及的 功能之外,下面將介紹log4cplus提供的執行緒和套接字的使用情況。ndc 首先我們先了解一下log4cplus中嵌入診斷上下文 nested diagnostic context 即ndc。對lo...

開源日誌系統 log4cplus 六

一些可以改進之處 1.使用者自定義loglevel的實現機制不夠開放在第五篇中曾經介紹過如何實現使用者自行定義loglevel,為了實現比較理想的效果,甚至還需要改log4cplus 的源 2.生成logger物件的機制可以改進我在使用時候,經常需要在不同的檔案 函式中操作同乙個logger,雖然l...

開源日誌系統log4cplus 二

本文介紹了使用log4cplus有六個步驟,並提供了一些例子引導你了解log4cplus的基本使用。基本使用 例1 using namespace log4cplus helpers int main m l n std auto ptr layout new patternlayout patte...