2013-10-02 18 views
6

異なるタイプのエントリをアプリケーションから別々のログファイルに書き込もうとしています。見つけようとしているため、すべてのエントリがすべてのログファイルに表示されます。私は何が間違っていますか?別個のログファイルに書き込む

重要なエントリだけを/tmp/log/critical.logに入れ、デバッグエントリを/tmp/log/debug.logファイルに入れて、すべてのエンタープライズが/tmp/log/all.logログに入るようにします。ファイル。続き

は、ここでキーを使用すると、おそらくてきたように(ということである/etc/rsyslog.confファイルのエントリ

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 

のsyslogエントリを書いて私のサンプルCプログラム...

#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(); 
} 

答えて

3

ですあなたが選んだレベルとそれ以下のレベルでログするのがデフォルトです。セレクタの比較を変更することで、syslog設定ファイル内の値を変更することができます。

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 

だけでなく<><=>=、あなたが!を使用して比較を否定することができます。指定しない場合のデフォルトは、=をしたい、>=です。

+1

こんにちは、設定ファイルを共有できますか? – ams

+0

どの設定ファイルですか?あなたのsyslog設定に入れるべき項目があります。私は/etc/rsyslog.d/90-local.confに私のものがあります – ralight

関連する問題