Chinaunix

标题: 奇怪,Solaris下用syslog写不进消息? [打印本页]

作者: stepone    时间: 2003-03-28 12:37
标题: 奇怪,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键连接。

先谢了!
作者: liupch    时间: 2003-03-28 13:01
标题: 奇怪,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                                      *
)
作者: 无双    时间: 2003-03-28 13:22
标题: 奇怪,Solaris下用syslog写不进消息?
日志守护线程有没有打开
还有日志文件配置也要检查一下
作者: stepone    时间: 2003-03-28 13:41
标题: 奇怪,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?

还请两位费神关心,其他大侠不吝赐教,谢谢。
作者: stepone    时间: 2003-03-28 13:52
标题: 奇怪,Solaris下用syslog写不进消息?
我的小程序是否要在root权限下运行?
作者: liupch    时间: 2003-03-28 15:27
标题: 奇怪,Solaris下用syslog写不进消息?
首先,我的程序就是使用普通用户执行的。
其次,我的syslog中显示的是syslog.test是因为我的那个程序的名字叫syslog.test
第三,如果你的syslog还是写不进去,那么你尝试一下重新启动syslog这个服务进程。在root状态下
kill -HUP
作者: stepone    时间: 2003-03-28 16:53
标题: 奇怪,Solaris下用syslog写不进消息?
按照你的建议都试了,都不管用。
作者: zhutr    时间: 2003-03-28 17:15
标题: 奇怪,Solaris下用syslog写不进消息?
最后加"\n"
没什么别的办法了,
瞎试试吧!
作者: stepone    时间: 2003-03-28 23:23
标题: 奇怪,Solaris下用syslog写不进消息?
还是不行
作者: uman    时间: 2003-03-29 01:28
标题: 奇怪,Solaris下用syslog写不进消息?
logger –p user.err  "syslog program testing"
你看看这个命令有用吗?
作者: stepone    时间: 2003-03-30 07:26
标题: 奇怪,Solaris下用syslog写不进消息?
用logger命令当然是可以的,但它无法记录下应用程序的名称以及进程ID,取而代之的往往是用户名。而应用程序名称这个消息对我还是很重要的。

用logger记录下的是:比如
Mar 29 19:07:53 pacsserver.lmi pacsman:syslog program test




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2