syslog的使用方法个人小结

原创 2017年08月19日 14:17:43

mail.* /var/log/maillog
其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为”err”或更高。例如:

Save mail and news errors of level err and higher in aspecial file.uucp,news.crit /var/log/spooler

当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。

Everybody gets emergency messages, plus log them on anther machine

.emerg
*.emerg @linuxaid.com.cn
alert消息应该写到root和tiger的个人账号中:

Root and Tiger get alert and higher messages

*.alert root,tiger
有时syslogd将产生大量的消息。例如内核(”kern”设备)可能很冗长。用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:

Log all kernel messages to the console

Logging much else clutters up the screen

kern.* /dev/console

用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别”none”禁止一个设备:

Log anything(except mail)of level info or higher

Don’t log private authentication messages!

*.info:mail.none;authpriv.none /var/log/messages
在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。通常要广泛纪录日志。Syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。
有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。用法:logger 例如:logger This is a test!
它将产生一个如下的syslog纪录:Aug 19 22:22:34 tiger: This is a test!
注意不要完全相信日志,因为攻击者很容易修改它的。
三个函数的原型和说明:

void openlog( char *ident, int option, int facility)
void syslog( int priority, char *format, …)
void closelog( void )

priority是facility及level的组合,其後参数的用法类似printf。

例:

include

include

int main(int argc,char* argv[])
{
openlog(“HEMM”,LOG_CONS | LOG_PID, LOG_USER);
int count=0;
while(count<5){
syslog(LOG_INFO,”%d, log info test…”,count);
count++;
}
closelog();
return 0;
}
检验:
#tail -f /var/log/messages
Jul 13 11:54:08 localhost HEMM[7631]: 0, log info test…
Jul 13 11:54:08 localhost HEMM[7631]: 1, log info test…
Jul 13 11:54:08 localhost HEMM[7631]: 2, log info test…
Jul 13 11:54:08 localhost HEMM[7631]: 3, log info test…
Jul 13 11:54:08 localhost HEMM[7631]: 4, log info test…


option
用于openlog()的option参数可以是以下几个的组合:
LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
LOG_PERROR : 将讯息也同时送到stderr
LOG_PID : 将PID含入所有讯息中
facility
该参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。
LOG_AUTH : 安全/授权讯息(别用这个,请改用LOG_AUTHPRIV)
LOG_AUTHPRIV : 安全/授权讯息
LOG_CRON : 时间守护神专用(cron及at)
LOG_DAEMON : 其它系统守护神
LOG_KERN : 核心讯息
LOG_LOCAL0到LOG_LOCAL7 : 保留
LOG_LPR : line printer次系统
LOG_MAIL : mail次系统
LOG_NEWS : USENET news次系统
LOG_SYSLOG : syslogd内部所产生的讯息
LOG_USER(default) : 一般使用者等级讯息
LOG_UUCP : UUCP次系统
level
决定讯息的重要性. 以下的等级重要性逐次递减:
LOG_EMERG : 系统无法使用
LOG_ALERT : 必须要立即采取反应行动
LOG_CRIT : 重要状况发生
LOG_ERR : 错误状况发生
LOG_WARNING : 警告状况发生
LOG_NOTICE : 一般状况,但也是重要状况
LOG_INFO : 资讯讯息
LOG_DEBUG : 除错讯息
如果没有改配置文件的话,默认的会写到 /var/log/messages 中。

可以看看你的syslog 配置文件 /etc/syslog.conf,比如我的是:
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console

# Log anything (except mail) of level info or higher.
# Don’t log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages

# The authpriv file has restricted access.
authpriv.* /var/log/secure

# Log all the mail messages in one place.
mail.* /var/log/maillog

# Log cron stuff
cron.* /var/log/cron

# Everybody gets emergency messages
.emerg

# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler

# Save boot messages also to boot.log
local7.* /var/log/boot.log

该文件的格式为 facility.priority action,这些字段的定义如下:

facility
指定产生消息的子系统。facility 有效的关键字有 auth、authpriv、cron、daemon、kern、lpr、mail、news、syslog、user、uucp 以及 local0 到 local7。

priority
指定消息的最低严重性,即此优先级和高于此优先级的消息将由这个规则匹配。priority 的有效关键字有 debug、info、notice、warning、err、crit、alert 和 emerg。

action
action 字段可以是文件名、tty(如 /dev/console)、以 @ 为前缀的远程机器、以逗号分隔的用户列表,或是 * 以表明向所有登录用户发送消息。最常见的操作是一个简单的文件名。

注意看着一行:*.info;mail.none;authpriv.none;cron.none /var/log/messages
因此所有比 LOG_INFO 级别高的讯息(当然包括LOG_ERR 了)都会写到 /var/log/messages中。
syslog.conf由syslogd读取。syslogd接受用户空间发送来的日志信息。用户空间程序通过调用和syslog相关的api发送日志,接口上面的帖子已经有了。
消息通过本地UNIX套接字发送给syslogd,由syslogd根据配置文件中的配置进行处理。
内核消息不是直接发送给syslogd的,而是由klogd读取/proc/kmesg文件,将其中读取的内核日志信息再转发给syslogd。
本身syslog的api没有什么复杂的,我建议你可以看看syslogd和klogd的源代码,也不大,总共不到5000行。
最后的附录里介绍的很清楚。。先看这个。。
unix环境高级编程里也有一些,,还设计到内核的log,后参考这个。。。
函数常用的就着么几个openlig syslog closelog
man syslog

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux学习记录--日志系统

日志系统 日志系统对于一个系统来说是非常重要的,从日志文件我们可以获取到系统的运行状况,协助我们排查问题。 对于CentOs来说,日志系统主要包含2个服务与1个程序 syslogd:记录...

syslog的使用方法个人小结

1.在/etc/syslog.conf下加入一行localN.*  pathname  例  local5.*    /root/Desktop/test.log 2.重新启动syslog /et...

开发板上syslog使用方法小结

1.在/etc/syslog.conf下加入一行localN.*  pathname  例  local5.*    /root/Desktop/test.log 2.重新启动syslog /etc...

fedora14中的syslog服务使用小结(获取hostapd的用户接入信息)

一、前言     需要从hostapd程序中获取用户的接入信息,而这个程序也刚好提供了syslog功能,即使用linux的集中式日志管理工具syslog来记录程序运行中的一些信息。在开启程序的sys...

SupeSite个人资料扩展的使用方法

  • 2011年07月02日 17:37
  • 281KB
  • 下载

C语言宏定义作用、使用方法小结(2)

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成...

Selenium IDE 使用方法小结

基本介绍: Selenium工具专门为WEB应用程序编写的一个验收测试工具。 Selenium的核心:browser bot,是用JAVASCRIPT编写的。 Selenium工具有4种:Selen...

Unity3d C#脚本学习小结(七)[OnTriggerEnter的使用方法]

在游戏中我们需要用到很多的碰撞和触发器,大家都知道OnCollisionEnter是判断两个刚体之间的碰撞,但是有时候用碰撞不是很方便,比如说人物进入门附近的一定区域就把门打开,这里建议使用触发器,但...

Spinner 使用方法小结——添加图片

转自:http://www.blogjava.net/crazycoding/archive/2011/07/09/353981.html android里的Spinner其实就是个ComboBox...
  • itde1
  • itde1
  • 2012年03月29日 19:36
  • 3274

vsftpd使用方法小结、Linux安装JDK出现“NoClassDefFoundError: /Object”的解决方案、ubuntu 12.04安装jdk

vsftpd使用方法小结   vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris,HP-UX 以及 IRIX ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:syslog的使用方法个人小结
举报原因:
原因补充:

(最多只允许输入30个字)