配置:
$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,"LOG_ALERT"); syslog(LOG_CRIT,"LOG_CRIT"); syslog(LOG_ERR,"LOG_ERR"); syslog(LOG_WARNING,"LOG_WARNING"); syslog(LOG_NOTICE,"LOG_NOTICE"); syslog(LOG_INFO,"LOG_INFO"); syslog(LOG_DEBUG,"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简洁、速度快。