syslog--unix like系统常用的log工具
2012-10-27 17:55
302 查看
当前的一个项目需要音视频的技术,而公司刚好没有类似的产品。幸好开源社区如此的强大,稍微谷歌一下,就找到了强大的Kamailio整合Asstersik的解决方案。
接下来的事情非常顺利,安装ubuntu操作系统、下载源码、编译、安装软件,按照官方文档一步步前进。过程中没有提示任何错误,这让我们很兴奋。
但是当我们使用imsandroid(一个Android系统的Sip客户端)进行测试时,结果显示连接失败。这个客户端软件严格遵守"不要打印任何让用户挫败的错误"原则,这是非常正确的,但是对查找错误而言,这让人挫败。
我们只好从服务器端开始查错,首先查看服务端的kamailio是否正常启动,执行命令 ps –ef | grep kamailio。结果显示我们sip服务没有启动。接下来我们需要的则是更多的关于软件执行的信息,包括启动信息、错误信息、以及任何软件开发人员想告诉我们的信息。
可是,问题来了。
如果你经常在windows下开发,并且没有太多的Linux开发经验,你会试图在软件的安装目录下查找包含log关键字的文字,结果是not found。
谁可以帮助你
syslog是unix like系统记录log的规范,非常多的系统都默认支持它。redhat、ubuntu centos等等。你可以在你系统中执行ps –ef | grep syslogd来确认。
正因为它是如此广泛地被支持,所以很可能你的软件就刚好是使用它来记录log的。
软件是否使用syslog,还是自定义log呢?
为了确认软件使用何种方式记录log,可以查看官方文档提到的该软件的log配置,比如Asterisk的logger.conf配置文件,其中就有一段
上面的syslog facility告诉你,软件支持syslog(这里facility意为服务类别)。即使它不说,如果你熟知syslog的facility,也可以猜到它是否支持。下面列举一些常见的facility及其含义:
手动设置软件使用日志服务
以redis为例,其配置档redis.conf默认没有使用syslog日志服务,找到以下的选项,然后将注释去掉
默认日志信息会被打印到/var/log/syslog文件中,如果希望将log打印到单独的文件中,需要在(ubuntu为/etc/rsyslog.d/50-default.conf,centos为/etc/rsyslog.conf)中配置的。比如
还应该注意的是,每个日志都有相应的log级别,这和java 的log4j工具很类似。
最后,容易遗忘的是重启syslogd服务,指令service rsyslog restart。然后启动服务,查看log即可tail -f -n 200 /var/log/redis.log。
教你看懂syslog文件
每条信息均会记录以下的重要信息:
事件发生的日期和时间。
启动事件的主机名称。
启动事件的服务名称(比如httpd、samba等)或函数名称(oam_unix)。
信息的实际内容
如果你想要更多的信息,或者比较少的、特别关注的信息,你可修改syslog的配置档来实现,这个在以后的章节会介绍。例子为系统/var/log/secure的截取:
结论
syslog的应用是如此的广泛,许多的软件采用它来记录log,所以我们很有必要理解并掌握它。不仅要认识syslog提供的服务,以及如何去发现、甚至配置服务对应的log文档路径,还要知道如何在软件中定义服务的log级别。
系统默认包含使用syslog的服务
默认在/var/log目录下,可以找到如下的目录:
/var/log/cron:
记录系统排程启动的信息。
/var/log/dmesg:
记录系统开机时产生的各种信息。
/var/log/lastlog:
记录用户登录系统的信息。
/var/log/maillog 或 /var/log/mail/*:
记录邮件相关的信息,主要有sendmain与devecot产生的信息,前者是SMTP协议的提供者,而后者是POP3协议的提供者。
/var/log/messages:
记录系统发生的错误信息,对于差错非常重要。
/var/log/secure:
记录软件验证的信息。包含ssh、telnet以及login程序等程序的验证信息,基本上,涉及验证的软体都会在这个档案中记录。
/var/log/wtmp, /var/log/faillog:
这两个档案记录正确登入系统的账号与错误登入的账号信息。
/var/log/httpd/*, /var/log/news/*, /var/log/samba/*:
不同的服务可能使用自己的log档记录产生的各项信息,这需要软件在配置档中进行相应的配置。
本文出自 “jeremy的技术博客” 博客,请务必保留此出处http://ijeremy.blog.51cto.com/6126672/1039524
接下来的事情非常顺利,安装ubuntu操作系统、下载源码、编译、安装软件,按照官方文档一步步前进。过程中没有提示任何错误,这让我们很兴奋。
但是当我们使用imsandroid(一个Android系统的Sip客户端)进行测试时,结果显示连接失败。这个客户端软件严格遵守"不要打印任何让用户挫败的错误"原则,这是非常正确的,但是对查找错误而言,这让人挫败。
我们只好从服务器端开始查错,首先查看服务端的kamailio是否正常启动,执行命令 ps –ef | grep kamailio。结果显示我们sip服务没有启动。接下来我们需要的则是更多的关于软件执行的信息,包括启动信息、错误信息、以及任何软件开发人员想告诉我们的信息。
可是,问题来了。
如果你经常在windows下开发,并且没有太多的Linux开发经验,你会试图在软件的安装目录下查找包含log关键字的文字,结果是not found。
谁可以帮助你
syslog是unix like系统记录log的规范,非常多的系统都默认支持它。redhat、ubuntu centos等等。你可以在你系统中执行ps –ef | grep syslogd来确认。
正因为它是如此广泛地被支持,所以很可能你的软件就刚好是使用它来记录log的。
软件是否使用syslog,还是自定义log呢?
为了确认软件使用何种方式记录log,可以查看官方文档提到的该软件的log配置,比如Asterisk的logger.conf配置文件,其中就有一段
;debug => debug ;security => security console => notice,warning,error ;console => notice,warning,error,debug messages => notice,warning,error ;full => notice,warning,error,debug,verbose,dtmf,fax ;syslog keyword : This special keyword logs to syslog facility ; ;syslog.local0 => notice,warning,error ; |
服务类别 | 说明 |
auth (authpriv) | 记录与验证有关的信息 |
cron | 记录系统排程的信息 |
daemon | 记录各个daemon产生的信息 |
kern | 记录核心产生的信息 |
lpr | 记录列印相关的信息 |
mail | 记录邮件的有关的信息 |
news | 记录新闻有关的信息 |
syslog | 记录syslog本省产生的信息 |
user, uucp, local0 ~ local7 | 记录各种传统的Unix系统本身有关的信息 |
以redis为例,其配置档redis.conf默认没有使用syslog日志服务,找到以下的选项,然后将注释去掉
# it can be one of: # debug (a lot of information, useful for development/testing) # verbose (many rarely useful info, but not a mess like the debug level) # notice (moderately verbose, what you want in production probably) # warning (only very important / critical messages are logged) loglevel debug # Specify the log file name. Also 'stdout' can be used to force # Redis to log on the standard output. Note that if you use standard # output for logging but daemonize, logs will be sent to /dev/null logfile stdout # To enable logging to the system logger, just set 'syslog-enabled' to yes, # and optionally update the other syslog parameters to suit your needs. syslog-enabled yes # Specify the syslog identity. syslog-ident redis # Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. syslog-facility local0 |
*.*;auth,authpriv.none,local0.none -/var/log/syslog local0.* -/var/log/redis.log |
等级 | 等级名称 | 说明 |
1 | info | 一般的说明信息,一般提示用户级别的操作信息 |
2 | notice | 比info还需要被注意的信息 |
3 | warning (warn) | 警示信息,可能出现了问题,但是不影响软件的正常运行 |
4 | err (error) | 一些重大的错误,可能导致软件不能正常使用 |
5 | crit | 严重的信息 |
6 | alert | 比crit更为严重的信息 |
7 | emerg (panic) | 罪严重的警告,意指系统可能当机。通常只有硬件出现错误,导致核心无法正常工作才会出现。 |
教你看懂syslog文件
每条信息均会记录以下的重要信息:
事件发生的日期和时间。
启动事件的主机名称。
启动事件的服务名称(比如httpd、samba等)或函数名称(oam_unix)。
信息的实际内容
如果你想要更多的信息,或者比较少的、特别关注的信息,你可修改syslog的配置档来实现,这个在以后的章节会介绍。例子为系统/var/log/secure的截取:
[root@www ~]# cat /var/log/secure 1 Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session opened for user root by (uid=0) 2 Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session closed for user root 3 Mar 16 16:01:51 www su: pam_unix(su-l:auth): authentication failure; logn ame=vbird uid=500 euid=0 tty=pts/1 ruser=vbird rhost= user=root 4 Mar 16 16:01:55 www su: pam_unix(su-l:session): session opened for user root by vbird(uid=500) 5 Mar 16 16:02:22 www su: pam_unix(su-l:session): session closed for user root |--日期/时间------|-H-|--------服务或函数---------|--訊息說明------> |
syslog的应用是如此的广泛,许多的软件采用它来记录log,所以我们很有必要理解并掌握它。不仅要认识syslog提供的服务,以及如何去发现、甚至配置服务对应的log文档路径,还要知道如何在软件中定义服务的log级别。
系统默认包含使用syslog的服务
默认在/var/log目录下,可以找到如下的目录:
/var/log/cron:
记录系统排程启动的信息。
/var/log/dmesg:
记录系统开机时产生的各种信息。
/var/log/lastlog:
记录用户登录系统的信息。
/var/log/maillog 或 /var/log/mail/*:
记录邮件相关的信息,主要有sendmain与devecot产生的信息,前者是SMTP协议的提供者,而后者是POP3协议的提供者。
/var/log/messages:
记录系统发生的错误信息,对于差错非常重要。
/var/log/secure:
记录软件验证的信息。包含ssh、telnet以及login程序等程序的验证信息,基本上,涉及验证的软体都会在这个档案中记录。
/var/log/wtmp, /var/log/faillog:
这两个档案记录正确登入系统的账号与错误登入的账号信息。
/var/log/httpd/*, /var/log/news/*, /var/log/samba/*:
不同的服务可能使用自己的log档记录产生的各项信息,这需要软件在配置档中进行相应的配置。
本文出自 “jeremy的技术博客” 博客,请务必保留此出处http://ijeremy.blog.51cto.com/6126672/1039524
相关文章推荐
- UNIX—LIKE系统常用创建动态库的方法
- 常用的UNIX系统调用跟踪调试工具
- 常用的UNIX系统调用跟踪调试工具
- unix like系统的android反编译工具
- 类 Unix 系统下常用工具小结
- syslog:类Unix系统常用的log服务
- 常用的UNIX系统调用跟踪调试工具
- Linux文件系统(三)—— 文件系统常用工具介绍
- shared libraries在unix-like系统上的实现的一些差别
- [常用工具]win系统下通过修改环境变量实现“开始-运行”来打开应用程序
- 常用统计系统工具与查询平台
- 一张图记住常用 Linux 系统性能诊断工具
- 常用VBS小工具:iconv,unix2dos/dos2unix,base64Encode/Decode
- 常用Unix系统 逝去的美好
- Linux下常用的系统性能查看分析工具
- 5款常用mysql slow log分析工具的比较
- 不常用的系统配置使用工具(msconfig)
- UNIX 系统常用管理命令
- linux记录系统中常用重要的log记录和用户的所有操作精确命令记录
- Linux & Unix 系统中常用解压和压缩命令