һ
ע ¼  
 ӹע
   ʾһ  |  ر
ܰʾ΢֤Ƶ΢ʺŰѹڣ°󶨣°΢  |  ر

Mihooke's blog

IT֮

 
 
 
 
 

־

 
 

LOG4CPPĿеļ򵥷װ  

2015-06-22 22:37:55|  ࣺ C++ |  ǩ |ٱ |ֺС 

  LOFTER ҵƬ  |

/*LOG4CPP.h*/

#ifndef LOG4CPP_H_

#define LOG4CPP_H_

 

#include <string>

#include <log4cpp/Category.hh>

#include <log4cpp/FileAppender.hh>

#include <log4cpp/Priority.hh>

#include <log4cpp/PatternLayout.hh>

namespace Log

{

/**

 * ʼ

 * @param  wszLogFilePath ļ·

 * @param  r              

 * @return                true/false

 */

bool init(const wchar_t* wszLogFilePath, int r);

 

/**

 * ӡINFO־

 * @param wszIn ־ַ

 * @return true/false

 */

bool Info(const wchar_t* wszIn);

bool Info(const std::wstring &wstrIn);

 

/**

 * ӡERROR־

 * @param wszIn ־ַ

 * @return true/false

 */

bool Error(const wchar_t* wszIn);

bool Error(const std::wstring &wstrIn);

 

/**

 * ӡDEBUG־

 * @param wszIn ־ַ

 * @return true/false

 */

bool Debug(const wchar_t* wszIn);

bool Debug(const std::wstring &wstrIn);

 

/**

 * ־ͷ

 * @return true/false

 */

bool uninit();

}

#endif

/*LOG4CPP.cpp*/

#include "LOG4CPP.h"

log4cpp::PatternLayout* layout1;

log4cpp::Appender* fileappender;

log4cpp::Category& rootLog = log4cpp::Category::getRoot().getInstance("TCALog");

bool wchar2char(const wchar_t *wstr,std::string &outStr);

{

if (wstr == NULL)

return false;

int wstrlen = wcslen(wstr);

int templen = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);

char *tempstr = new char[templen+1];

memset(tempstr, 0, templen+1);

WideCharToMultiByte(CP_ACP, 0, wstr, -1, 

tempstr, templen, NULL, NULL);

outStr = tempstr;

delete tempstr;

}

 

bool Log::init(const wchar_t *wszLogFilePath, int r)

{

if((layout1 = new log4cpp::PatternLayout()) == NULL)

return false;

layout1->setConversionPattern("%d %p %c?? %m %n");

std::string tempFilePath;

wchar2char(wszLogFilePath, tempFilePath);

if((fileappender = new log4cpp::FileAppender("fileappender", tempFilePath.c_str())) == NULL)

return false;

fileappender->setLayout(layout1);

rootLog.addAppender(fileappender);

return true;

}

 

bool Log::Info(const wchar_t *wszIn)

{

size_t wszInlen = wcslen(wszIn);

size_t conver = 0;

char *tempInfo = (char *)malloc(wszInlen+1);

wcstombs_s(&conver, tempInfo, wszInlen, wszIn, _TRUNCATE);

rootLog.setPriority(log4cpp::Priority::INFO);

rootLog.info(tempInfo);

free(tempInfo);

return true;

}

bool Log::Info(const std::wstring &wstrIn)

{

if(wstrIn.length() == 0)

return false;

std::string tempInfo;

wchar2char(wstrIn.c_str(), tempInfo);

rootLog.setPriority(log4cpp::Priority::INFO);

rootLog.info(tempInfo.c_str());

return true;

}

 

bool Log::Error(const wchar_t *wszIn)

{

if(wszIn == NULL)

return false;

std::string tempError;

wchar2char(wszIn, tempError);

rootLog.setPriority(log4cpp::Priority::ERROR);

rootLog.error(tempError.c_str());

return true;

}

bool Log::Error(const std::wstring &wstrIn)

{

if(wstrIn.length() == 0)

return false;

std::string tempError;

wchar2char(wstrIn.c_str(), tempError);

rootLog.setPriority(log4cpp::Priority::ERROR);

rootLog.error(tempError.c_str());

return true;

}

 

bool Log::Debug(const wchar_t *wszIn)

{

if(wszIn == NULL)

return false;

std::string tempDebug;

wchar2char(wszIn, tempDebug);

rootLog.setPriority(log4cpp::Priority::DEBUG);

rootLog.debug(tempDebug.c_str());

return true;

}

bool Log::Debug(const std::wstring &wstrIn)

{

if(wstrIn.length() == 0)

return false;

std::string tempDebug;

wchar2char(wstrIn.c_str(), tempDebug);

rootLog.setPriority(log4cpp::Priority::DEBUG);

rootLog.debug(tempDebug.c_str());

return true;

}

 

bool Log::uninit()

{

log4cpp::Category::shutdown();

return true;

}

 

Դ

 
 
Ķ(131)| (0)
Ƽ ת

ʷϵĽ

LOFTERĸ

<#--־Ⱥ־--> <#--Ƽ־--> <#--ü¼--> <#--Ƽ--> <#--Ķ--> <#--ҳƼ--> <#--ʷϵĽ--> <#--Ƽ־--> <#--һƪһƪ--> <#-- ȶ --> <#-- Ź --> <#--ұģṹ--> <#--ģṹ--> <#--ģṹ--> <#--ͶƱ-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

ҳ

ҵƬ - ͷ - ֻ - LOFTER APP - Ĵ˲

׹˾Ȩ ©1997-2017