配置:
$template testdailylog,"/var/log/uniqs/%programname%/%programname%_%syslogseverity-text%_%$year%-%$month%-%$day%.log"
if $syslogfacility-text == "local3" then {
action(type="omfile"
fileOwner="uniqs" filegroup="uniqs" dynafile="testdailylog")
stop
}
簡單代碼:
#include<syslog.h>
#include<iostream>
int main()
{
openlog("gamesvr", LOG_CONS|LOG_PID, LOG_LOCAL3);
syslog(LOG_INFO,"######################################################################################## server start...\n");
std::string strInput = "test log type:%s";
syslog(LOG_EMERG, strInput.c_str(), "LOG_EMERG");
syslog(LOG_ALERT, strInput.c_str(), "LOG_ALERT");
syslog(LOG_CRIT, strInput.c_str(), "LOG_CRIT");
syslog(LOG_ERR, strInput.c_str(), "LOG_ERR");
syslog(LOG_WARNING, strInput.c_str(), "LOG_WARNING");
syslog(LOG_NOTICE, strInput.c_str(), "LOG_NOTICE");
syslog(LOG_INFO, strInput.c_str(), "LOG_INFO");
syslog(LOG_DEBUG, strInput.c_str(), "LOG_DEBUG");
std::cin>>strInput;
while(true)
{
syslog(LOG_INFO, strInput.c_str());
if(strInput == "e"||strInput == "E")
{
break;
}
std::cin>>strInput;
}
syslog(LOG_INFO,"######################################################################################## server stop...\n");
closelog();
return 0;
}
說明:可以簡單封一下,要不有可能程序異常結束時closelog()沒有被調用到。刪除日誌時小心一點,用cat /dev/null>abc.log 這種方式,不要直接刪除,直接刪除後續日誌會沒有寫到文件中。
缺陷:不能跨平臺。
優點:API簡潔、速度快。