|
藍森林 http://www.lslnet.com 2006年6月6日 10:18
奇怪,Solaris下用syslog寫不進消息?
我想在UNIX下找到一個類似於Windows2000下控制面板-〉管理工具-〉事件查看器的一種機制,通過此我能查看到操作系統上運行的應用程序,尤其是自己編的應用程序產生的消息,消息內容包括(消息ID、產生時間、主機名、消息來源、詳細描述等)。這樣便於管理。
於是我在UNIX下找到了syslog()函數,並用此編了一個小程序,如下:
-------------------------------------------------------------------------
/*test.c*/
#include <syslog.h>;
void main(void)
{
syslog(LOG_USER|LOG_ERR, "syslog program testing");
}
-------------------------------------------------------------------------
程序在Solaris編譯運行,結果在var/adm/messages文件最後找到有一條記錄:
Month Date hh:mm:ss 主機名 test[PID]:
顯然消息已經寫進了messages文件,但是該消息不完全,完整的消息應該是
Month Date hh:mm:ss 主機名 test[PID]:syslog program testing
所以我想請教各位高手,為何沒有把"syslog program testing"這部分內容寫進messages文件,如何解決該問題?急!
/etc/syslog.conf文件中已經設置了:
*.err /var/adm/messages
空格的地方使用tab鍵連接。
先謝了! |
奇怪,Solaris下用syslog寫不進消息?
你的程序在我的solaris上運行沒問題呀。
在/var/adm/messages文件中打印的是
Mar 28 12:52:53 bj157 syslog.test[1731]: [ID 575889 user.error] syslog program testing
我的syslog.conf是這樣寫的
*.err;kern.notice;auth.notice /dev/sysmsg
*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
*.alert;kern.err;daemon.err operator
*.alert root
*.emerg *
ifdef(`LOGHOST', ,
user.err /dev/sysmsg
user.err /var/adm/messages
user.alert `root, operator'
user.emerg *
) |
奇怪,Solaris下用syslog寫不進消息?
日誌守護線程有沒有打開
還有日誌文件配置也要檢查一下 |
奇怪,Solaris下用syslog寫不進消息?
首先先謝謝精靈王liupch和版主無雙的指教。
按照兩位說的,我首先檢查了syslog.conf的配置,與liupch機器上的是一樣的,除了在
ifdef(`LOGHOST', ,
user.err /dev/sysmsg
user.err /var/adm/messages
user.alert `root, operator'
user.emerg *
這句前有一句
mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost)
我想這應該不影響大礙吧?
另外我想知道liupch的/var/adm/messages文件打印的
Mar 28 12:52:53 bj157 syslog.test[1731]: [ID 575889 user.error] syslog program testing,
這syslog怎麼會上去的,而在我的機器上則只有test,而不是syslog.test
另外我看liupch是搞UNIX監控的,對此我也很感興趣,能否留下email進一步探討?
無雙版主建議檢查syslogd是否打開,我是用ps -ef命令,能查到syslogd正在運行,另外您說的檢查日誌文件配置,這指的是syslog.conf?
還請兩位費神關心,其他大俠不吝賜教,謝謝。 |
奇怪,Solaris下用syslog寫不進消息?
我的小程序是否要在root權限下運行? |
奇怪,Solaris下用syslog寫不進消息?
首先,我的程序就是使用普通用戶執行的。
其次,我的syslog中顯示的是syslog.test是因為我的那個程序的名字叫syslog.test
第三,如果你的syslog還是寫不進去,那麼你嘗試一下重新啟動syslog這個服務進程。在root狀態下
kill -HUP |
奇怪,Solaris下用syslog寫不進消息?
按照你的建議都試了,都不管用。 |
奇怪,Solaris下用syslog寫不進消息?
最後加"\n"
沒什麼別的辦法了,
瞎試試吧! |
奇怪,Solaris下用syslog寫不進消息?
還是不行 |
奇怪,Solaris下用syslog寫不進消息?
logger –p user.err "syslog program testing"
你看看這個命令有用嗎? |
奇怪,Solaris下用syslog寫不進消息?
用logger命令當然是可以的,但它無法記錄下應用程序的名稱以及進程ID,取而代之的往往是用戶名。而應用程序名稱這個消息對我還是很重要的。
用logger記錄下的是:比如
Mar 29 19:07:53 pacsserver.lmi pacsman:syslog program test |
| |