歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> log4c日志庫的用法,再封裝及其完整例子

log4c日志庫的用法,再封裝及其完整例子

日期:2017/3/1 10:07:07   编辑:Linux編程

找了多篇文章,發現都講的不怎麼簡明。自己摸索了下,記錄如下:

Log4c中有三個重要的概念, Category, Appender, Layout。

Category用於區分不同的Logger, 其實它就是個logger。在一個程序中我們可以通過Category來指定很多的Logger,用於不同的目的。

Appdender用於描述輸出流,通過為Category來指定一個Appdender,可以決定將log信息來輸出到什麼地方去,比如stdout, stderr, 文件, 或者是socket等等

Layout用於指定日志信息的格式,通過為Appender來指定一個Layout,可以決定log信息以何種格式來輸出,比如是否有帶有時間戳, 是否包含文件位置信息等,以及他們在一條log信息中的輸出格式的等。

例子:

系統:Ubuntu 12.10 .

准備:

安裝log4c庫, sudo apt-get install liblog4c-dev liblog4c-doc

別的系統請百度/GOOGLE找相關編譯安裝當。log4c官網:http://log4c.sourceforge.net/index.html

文件:

log.h log.c 自己將log4c重新封裝的函數

test-log.c 測試用的主函數

log4crc 配置文件(xml,照著寫就行)

//log.h

  1. #ifndef _LOG_H_
  2. #define _LOG_H_
  3. #include <string.h>
  4. #include <stdlib.h>
  5. #ifdef __cplusplus
  6. extern"C"
  7. {
  8. #endif
  9. #include "log4c.h"
  10. #ifdef __cplusplus
  11. }
  12. #endif
  13. #define LOG_PRI_ERROR LOG4C_PRIORITY_ERROR
  14. #define LOG_PRI_WARN LOG4C_PRIORITY_WARN
  15. #define LOG_PRI_NOTICE LOG4C_PRIORITY_NOTICE
  16. #define LOG_PRI_DEBUG LOG4C_PRIORITY_DEBUG
  17. #define LOG_PRI_TRACE LOG4C_PRIORITY_TRACE
  18. externint log_open(constchar *category);
  19. externvoid log_message(int priority ,constchar* fmt, ...);
  20. externvoid log_trace(constchar *file , int line , constchar *func, constchar *fmt ,...);
  21. externint log_close();
  22. #define LOG_ERROR(fmt , args...) \
  23. log_message(LOG_PRI_ERROR, fmt, ##args)
  24. #define LOG_WARN(fmt, args...) \
  25. log_message(LOG_PRI_WARN, fmt , ##args)
  26. #define LOG_NOTICE(fmt , args...) \
  27. log_message(LOG_PRI_NOTICE, fmt , ##args)
  28. #define LOG_DEBUG(fmt , args...) \
  29. log_message(LOG_PRI_DEBUG, fmt , ##args)
  30. #define LOG_TRACE(fmt,args...) \
  31. log_trace(__FILE__ , __LINE__ , __FUNCTION__ , fmt ,## args)
  32. #endif
Copyright © Linux教程網 All Rights Reserved