藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 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



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com