日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

libslog---高性能开源C/C++多线程安全日志库

發(fā)布時(shí)間:2025/7/25 c/c++ 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 libslog---高性能开源C/C++多线程安全日志库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Fromwiki:?https://code.google.com/p/easynetwork/wiki/libslog
libslog是一個(gè)基于linux的高性能開源C/C++多線程安全日志庫。EasyNetwork?服務(wù)端開源框架使用了libslog作為日志庫。 libslog的最新源碼可從這里下載:libslog.tar 有任何寶貴的意見和建議請(qǐng)聯(lián)系作者:xmulyj@gmail.com

一、 特性

a. 多線程安全
b. 簡單的配置參數(shù)
c. 支持熱更新log參數(shù),如從INFO級(jí)別更改為DEBUG不需要重啟服務(wù)器

二、安裝與使用

a. 編譯
make b. 安裝 sudo make install c. 使用
libslog使用非常簡單,在自己的源文件中包含頭文件slog.h:
#include "slog.h"使用libslog時(shí)需要先進(jìn)行初始化:
SLOG_INIT(SLOG_CONFIG_PATH); //SLOG_INIT(NULL);其中SLOG_CONFIG_PATH是slog的配置文件路徑,如果為NULL的話將使用默認(rèn)的配置參數(shù),并且log將打印到屏幕。 libslog有5個(gè)log級(jí)別:TRACE、DEBUG、INFO、WARN、ERROR。TRACE級(jí)別最高,將打印所有級(jí)別的log。DEBUG次之,可以打印TRACE除外的其他log。ERROR最低,只打印本級(jí)別的log。slog的使用非常簡單,與C語言的printf格式一致:
#include "slog.h"int main() {SLOG_INIT(NULL);SLOG_TRACE("hello slog. %d", 1);SLOG_DEBUG("hello slog. %d", 2);SLOG_INFO("hello slog. %d", 3);SLOG_WARN("hello slog. %d", 4);SLOG_ERROR("hello slog. %d", 5);SLOG_UNINIT();return; }其中SLOG_UNINIT()是對(duì)slog的反初始化。 最后鏈接slog庫:
g++ a.cpp -lslog -o test_slog三、 性能 a. 測(cè)試條件

每次寫入100w條數(shù)據(jù),測(cè)試10次. 每條數(shù)據(jù)的格式如下: slog: 2012-09-24 17:55:52[WARN]ccccccc... (99個(gè)'C'字符) log4cpp: 2012-09-24 18:03:58 [INFO]: [sub1] ccccccc... (99個(gè)'C'字符)

b. 機(jī)器負(fù)載slog: load average: 0.25, 0.32, 0.60 log4cpp: load average: 0.29, 0.37, 0.51c. log4cpp版本
log4cpp-1.1rc1.tar.gz
d. 測(cè)試結(jié)果
----------------------------\ | slog | log4cpp ---------------------------1 | 1.7867 | 10.4785 2 | 1.8693 | 11.6938 3 | 1.8035 | 9.6103 4 | 1.9039 | 9.6179 5 | 1.7574 | 10.6606 6 | 1.7622 | 9.7011 7 | 1.7441 | 9.5807 8 | 1.8711 | 11.16469 | 1.7866 | 9.6206 10 | 1.7732 | 9.6028 ----|----------------------- avg | 1.8058 | 10.17309 ----------------------------(單位:s)
性能比log4cpp高5倍:)

四、 slog的配置參數(shù)

slog的配置參數(shù)非常簡單,并且支持熱更新,即在不需要重啟服務(wù)器的情況下修改配置參數(shù),這點(diǎn)對(duì)線上跟蹤問題非常有用。
### log級(jí)別slog_level=DEBUG #slog_level=INFO ### log文件名slog_log_name=./log/server.log ### log 文件最大大小(單位M)slog_log_maxsize=20M ### log文件最多個(gè)數(shù)slog_log_maxcount=30 ### log緩沖區(qū)大小(單位KB,默認(rèn)512KB)slog_flush_size=1024 ### log緩沖刷新間隔(單位s,默認(rèn)1s)slog_flush_interval=2 ### log動(dòng)態(tài)更新配置參數(shù)的時(shí)間間隔(單位s,默認(rèn)60s)config_update_interval=30

五、 測(cè)試代碼(見源碼)

a. slog_test.c
char buf[100];memset(buf, 'c', 100);buf[99]=0;int i,j; struct timeval start, end;printf("start...\n"); gettimeofday(&start, NULL); for(i=0; i<</span>100; ++i) {for(j=0;j<</span>10000; ++j)SLOG_WARN("%s", buf); }gettimeofday(&end, NULL);printf("end...\n");int us = (end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec); printf("use time:%0.4f(s)\n", us/1000000.0);
b. log4cpp_test.cpp
char buf[100];memset(buf, 'C', 100);buf[99] = '\0';int i, j; struct timeval start, end;printf("start...\n"); gettimeofday(&start, NULL); for(i=0; i<</span>100; ++i) {for(j=0; j<</span>10000; ++j)sub1.info(buf); }gettimeofday(&end, NULL);printf("end...\n");int us = (end.tv_sec-start.tv_sec)*1000000+(end.tv_usec-start.tv_usec); printf("use time:%0.4f(s)\n", us/1000000.0);

總結(jié)

以上是生活随笔為你收集整理的libslog---高性能开源C/C++多线程安全日志库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。