centos rsyslog配置及簡單應用

配置:

$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簡潔、速度快。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章