2013-10-02 23 views
6

Ich versuche, verschiedene Arten von Einträgen in separaten Protokolldateien aus einer Anwendung zu schreiben. Aus Gründen, die ich herausfinden möchte, erscheinen alle Einträge in allen Protokolldateien. Was könnte ich falsch machen?Schreiben in separaten Protokolldateien

Ich möchte nur kritische Einträge in /tmp/log/critical.log gehen und Debug-Einträge in /tmp/log/debug.log Datei gehen, während alle Enteries in /tmp/log/all.log Protokoll gehen können Datei.

Im Folgenden sind Einträge in /etc/rsyslog.conf Datei

local0.*            /tmp/log/all.log 
local0.alert           /tmp/log/alert.log 
local0.crit            /tmp/log/critical.log 
local0.debug           /tmp/log/debug.log 
local0.emerg           /tmp/log/emergency.log 
local0.err            /tmp/log/error.log 
local0.info            /tmp/log/info.log 
local0.notice           /tmp/log/notice.log 
local0.warning           /tmp/log/warning.log 

Meine Probe c Programm schreiben syslog Einträge ...

#include<syslog.h> 

main() 
{ 
    openlog("myapp",LOG_CONS|LOG_PID|LOG_NDELAY,LOG_LOCAL0); 

    syslog(LOG_EMERG|LOG_LOCAL0,"Emergency",getuid()); 
    syslog(LOG_ALERT|LOG_LOCAL0,"Alert",getuid()); 
    syslog(LOG_CRIT|LOG_LOCAL0,"Critical",getuid()); 
    syslog(LOG_ERR|LOG_LOCAL0,"Error",getuid()); 
    syslog(LOG_WARNING|LOG_LOCAL0,"Warning",getuid()); 
    syslog(LOG_NOTICE|LOG_LOCAL0,"Notice",getuid()); 
    syslog(LOG_INFO|LOG_LOCAL0,"Information",getuid()); 
    syslog(LOG_DEBUG|LOG_LOCAL0,"Debug",getuid()); 

    closelog(); 
} 

Antwort

3

Der Schlüssel hier ist, dass (wie Sie haben wahrscheinlich vermutete) der Standard ist, auf der Ebene, die Sie wählen, und darunter zu protokollieren. Sie können dies in der Syslog-Konfigurationsdatei ändern, indem Sie den Selektorvergleich ändern. Der Standard, wenn nicht ist >= angegeben, Sie wollen =:

local0.*             /tmp/log/all.log 
local0.=alert           /tmp/log/alert.log 
local0.=crit            /tmp/log/critical.log 
local0.=debug           /tmp/log/debug.log 
local0.=emerg           /tmp/log/emergency.log 
local0.=err            /tmp/log/error.log 
local0.=info            /tmp/log/info.log 
local0.=notice           /tmp/log/notice.log 
local0.=warning           /tmp/log/warning.log 

Neben <, >, <=, >=, können Sie den Vergleich mit ! negieren.

+1

Hallo, können Sie die Konfigurationsdatei freigeben? – ams

+0

Welche Konfigurationsdatei? Die Einträge sollen in deine Syslog-Konfiguration eingetragen werden. Ich habe meine in /etc/rsyslog.d/90-local.conf – ralight

Verwandte Themen