Log4Cpp 使用实例
来源:互联网 发布:嵌入式linux内核移植 编辑:程序博客网 时间:2024/05/16 19:18
Log4Cpp 的概念及简介自行百度,网络上已经很齐全了。
下载编译呼,得到了log4cpp.dll 和 log4cpp.lib 以及 include 头文件等内容。
封装了个Log4Cpp的使用类,输出的效果如下:
[2017-02-20 16:09:51.910](NOTICE)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-02-20 16:09:51.911](NOTICE)Sys : 写入系统日志[2017-02-20 16:09:51.911](NOTICE)Sys : 退出了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-02-20 16:10:46.190](NOTICE)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-02-20 16:10:46.191](NOTICE)Sys : 写入系统日志[2017-02-20 16:10:46.191](DEBUG)Sys : 写入系统日志-debug 级别[2017-02-20 16:10:46.193](NOTICE)Sys : 退出了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-02-20 16:10:47.047](DEBUG)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton2函数[2017-02-20 16:10:47.885](DEBUG)Sys : 退出了CPfy_log4cppDlg::OnBnClickedButton2函数[2017-02-20 16:11:48.813](NOTICE)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-02-20 16:11:48.814](NOTICE)Sys : 写入系统日志[2017-02-20 16:11:48.814](DEBUG)Sys : 写入系统日志-debug 级别[2017-02-20 16:11:48.814](NOTICE)Sys : 退出了CPfy_log4cppDlg::OnBnClickedButton1函数[2017-02-20 16:11:49.733](DEBUG)Sys : 进入了CPfy_log4cppDlg::OnBnClickedButton2函数[2017-02-20 16:11:50.571](DEBUG)Sys : 退出了CPfy_log4cppDlg::OnBnClickedButton2函数
文末会放上源码工程,这里介绍下主要的功能函数
1.类初始化
在使用项目的stdafx.h 中包含封装类头文件
#include "Log4CppPfy.h"
然后在 InitInstance() 中加入
CLog4CppPfy::InitInstance();
初始化函数如下
void CLog4CppPfy::InitInstance(){//log日志文件路径const string strPath = "D:\\My Documents\\Pfy_Log";//样式 const string strPattern = "[%d{%Y-%m-%d %H:%M:%S.%l}](%p)%c %x: %m%n";//级别,文档最大容量,文档最大数量LogConf logConf = getConf();//设置各个类型的log样式级别//系统setLogIni(m_logSys, strPath, "log_sys.log", NAME_LOG_SYS, strPattern, logConf);//URLsetLogIni(m_logUrl, strPath, "log_url.log", NAME_LOG_URL, strPattern, logConf);//SQLsetLogIni(m_logSql, strPath, "log_sql.log", NAME_LOG_SQL, strPattern, logConf);}
其中m_logSys 就是log4cpp::Category,我这定了的是全局变量
log4cpp::Category &CLog4CppPfy::m_logSys = log4cpp::Category::getInstance(NAME_LOG_SYS);log4cpp::Category &CLog4CppPfy::m_logUrl = log4cpp::Category::getInstance(NAME_LOG_URL);log4cpp::Category &CLog4CppPfy::m_logSql = log4cpp::Category::getInstance(NAME_LOG_SQL);
setLogIni函数如下:
void CLog4CppPfy::setLogIni( log4cpp::Category &category, const string& strPath, const string& strFile, const string& strAppenderName, const string& strPattern, const LogConf& logConf ){string strAbsPath = strPath + "\\" + strFile;log4cpp::Appender *appender = new log4cpp::RollingFileAppender(strAppenderName, strAbsPath, \logConf.maxFileSize*1024*1024, logConf.maxBackupIndex);//创建输出目标文件log4cpp::PatternLayout *layout = new log4cpp::PatternLayout();layout->setConversionPattern(strPattern);appender->setLayout(layout);//设置样式category.setAdditivity(false);category.setAppender(appender);//设置创建好的输出源category.setPriority(logConf.priority);//设置优先级}
2.输出日志
初始化了完了,下面就是使用的时候直接输出日志了,log4cpp可以设置很多个输出级别,这里只是定义了2个:notice 和 debug
封装好的notice函数如下:
void CLog4CppPfy::notice( LogType eType, const char* stringFormat, ... ){va_list va;va_start(va, stringFormat);switch(eType){case LOG_SYS:{m_logSys.logva(log4cpp::Priority::NOTICE, stringFormat, va);}break;case LOG_URL:{m_logUrl.logva(log4cpp::Priority::NOTICE, stringFormat, va);}break;case LOG_SQL:{m_logSql.logva(log4cpp::Priority::NOTICE, stringFormat, va);}break;default:break;} //eTypeva_end(va);}
CLog4CppPfy::notice(CLog4CppPfy::LOG_SYS,"写入系统日志");CLog4CppPfy::debug(CLog4CppPfy::LOG_SYS,"写入系统日志-debug 级别");CLog4CppPfy::notice(CLog4CppPfy::LOG_URL,"写入网络日志");CLog4CppPfy::debug(CLog4CppPfy::LOG_URL,"写入网络日志-debug 级别");CLog4CppPfy::notice(CLog4CppPfy::LOG_SQL,"写入数据库操作日志");CLog4CppPfy::debug(CLog4CppPfy::LOG_SQL,"写入数据库操作日志-debug 级别");
3.源码下载
点击下载 0 0
- Log4Cpp 使用实例
- 使用LOG4CPP
- Log4cpp使用
- log4cpp - 使用
- log4cpp使用
- log4cpp使用(一)
- Log4cpp介绍及使用
- log4cpp linux使用
- log4cpp安装使用
- Log4cpp的使用
- Log4cpp介绍及使用
- log4cpp 编译与使用
- log4cpp介绍以及使用
- Log4cpp介绍及使用
- log4cpp库的使用
- Log4cpp介绍及使用
- Log4cpp介绍及使用
- log4cpp简单使用
- 图片处理Thumbnaillator框架
- 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
- 省市区编码表
- Java的ClassLoader分析与Jettty的WebAppClassLoader
- linux 下安装node.js
- Log4Cpp 使用实例
- Centos 学习大纲
- java并发之锁
- 17.2.20 Sparsifying Neural Network Connections for Face Recognition 小感
- 读取excel文件并将其中数据转换成脚本数据结构
- 编译unity-mono( 写给超级初学者的朋友)
- surface pro 4专业版没有64位虚拟机选项的解决办法
- 深度学习简介--PPT
- 9. iptables 配置