在应用中集成KiwiSyslog建立Windows下的集中日志系统

前一段写的一篇“建立Windows下面的syslog日志服务器”介绍了使用KiwiSyslog的一些情况,提到了在应用中集成Klog(KiwiSyslog的一个实用客户端工具)的方法。本文特地对Klog的DLL方式进行了测试,并对接口进行了封装和简化,贴出来和大家分享一下。
首先,找到Klog的3个文件:Klog.dll Klog.lib kloglib.h(我的电脑上在安装目录C:/Program Files/KLOG/KLOGDLL_CPP下面)。
使用时,将kloglib.h加入你的工程,然后把klog.lib加入工程的链接库,Klog.dll放在运行程序的旁边。
再把这个文件加入你的工程:
/*
Klogobj.h
Kiwi Logger v1.3
Sample C++ Logger class.
Links implicitly with KLOG.LIB.
Accesses KLOG.DLL at load-time.
*/
#include "kloglib.h"
classKLog
{
private:
intKret; // Returned error code
charKerror[100]; // Returned error string
HANDLEMyHdl;
public:
// Constructor. Initialise storage. Initialise the DLL.
// Set the syslog host, port, IP protocol, and RFC header process name.
KLog(char *Sysloghost, char *Service, intProtocol, char *Processname)
{
Kret = 0;
memset(Kerror, 0, sizeof(Kerror));
MyHdl = KLogInitialise();
KLogSetHostAddress(MyHdl,Sysloghost);
KLogSetPortByService(MyHdl,Service);
KLogUseTCP(MyHdl,Protocol);
KLogSetProcessName(MyHdl,1, Processname);
SetPriority("User", "Notice");
}
// Deconstructor. Do nothing.
~KLog()
{
}
// Set the priority using facility names
voidSetPriority(char *FacilityName, char *LevelName)
{
KLogSetMessageFacilityName(MyHdl,FacilityName);
KLogSetMessageLevelName(MyHdl,LevelName);
}
// Set the message
voidSetMessage(char *Msg)
{
KLogSetMessage(MyHdl,Msg);
}
BOOLSendMessage(char *Msg)
{
SetMessage(Msg);
return SendMessage();
}
//Stephen: 我扩展的SendMessage函数,用于直接发送指定等级的日志消息
BOOLSendMessage(char *FacilityName, char *LevelName, char *Msg)
{
SetPriority(FacilityName,LevelName);
SetMessage(Msg);
return SendMessage();
}
// Send the message. Return FALSE if an error occurred.
BOOLSendMessage()
{
if (KLogSendMessage(MyHdl,&Kret) == FALSE)
{
KLogReturnError(MyHdl,Kerror, sizeof(Kerror));
return FALSE;
}
else
Kerror[0] = '/0';
return TRUE;
}
// Return the last error code and message
voidReturnError(int *Rret, char *Rerror, intRlen)
{
*Rret = Kret;
strncpy(Rerror, Kerror, Rlen);
}
};
注:下面是可用的告警源(Facility name)和告警等级Level name
Kernel
User
Mail
Daemon
Auth
Syslog
Lpr
News
UUCP
Cron
System0
System1
System2
System3
System4
System5
Local0
Local1
Local2
Local3
Local4
Local5
Local6
Local7
Emergency
Alert
Critical
Error
Warning
Notice
Information
Debug
最后,在你的应用程序中,如下调用:
#include "klogobj.h"
… …
//创建一个日志类实例,并设置一些基本信息
//Syslog服务器:本机, 端口:514,使用UDP协议,应用标记:Test
KLogMyKLog("127.0.0.1","syslog",0,"Test");
intmain(intargc, char* argv[])
{
//默认发送等级User.Notice
MyKLog.SendMessage("应用开始运行!");
MyKLog.SendMessage("User","Error", "带等级的日志信息!");
… …
}
现在你可以打开Kiwi Syslog Daemon看看结果日志输出的结果了:
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭