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

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

syslog的使用方法个人小结

1.在/etc/syslog.conf下加入一行localN.*  pathname  例  local5.*    /root/Desktop/test.log 2.重新启动syslog /et...
  • chenjian723122704
  • chenjian723122704
  • 2011年12月13日 12:24
  • 10172

matlab小结

本组成员郑志远,张苓琬,于鹏朔。本周小组初步计划完成数组及多维数组方面的所有学习,最终学习到数组最基本部分,离预想环节有一点距离。...
  • zhengzhiyuan14
  • zhengzhiyuan14
  • 2015年10月19日 18:27
  • 185

开发板上syslog使用方法小结

1.在/etc/syslog.conf下加入一行localN.*  pathname  例  local5.*    /root/Desktop/test.log 2.重新启动syslog /etc...
  • yangxuan12580
  • yangxuan12580
  • 2016年05月25日 11:27
  • 4331

俄罗斯方块开发小结

学习Java半年有余,总想做点什么出来,而不是只纠结与语法和各种类包不可自拔。 于是我想,何不搞一个小游戏出来。 俄罗斯方块?脑海里浮现出这个名字,就它了,逻辑简单,对于我而言更可控, 在网上查找相关...
  • u014004279
  • u014004279
  • 2014年12月07日 20:58
  • 622

初学c#自我总结

14年从一家做java的公司跳到另外一家做C#的企业. 初做C#,因为有一定的语法基础,简单的代码基本可以理解.刚来公司就开始实战,参考前人的案例,开发相似的一些功能. 到目前(18年初),基本上...
  • weixin_33435344
  • weixin_33435344
  • 2018年01月04日 16:41
  • 10

AndroidApp 设计小结

视觉设计篇1.分辨率目前我们在市场上常见的Android的分辨率有:320×480 480×800 720×1080 800×1280…视觉在根据交互原型设计的时候,可以考虑以mdpi,也就是32...
  • liuzhenlee
  • liuzhenlee
  • 2016年04月30日 19:22
  • 518

2015.7个人反思小结以及后续规划

2015.7个人反思小结以及后续规划标签(空格分隔): 反思小结缘由: 总觉得有必要为自己写一篇小结,有些东西会跟随着时光慢慢被淡忘,写小结感觉和拍照一样,都是用来 记录自己曾经的点点滴滴,...
  • zpj779878443
  • zpj779878443
  • 2015年07月18日 21:39
  • 8453

入职两月半的工作业务总结

这阵子工作上全用上了ReactNative,边学边写一个月,基本熟悉品类或服务发布等业务的写法。可以分为几个部分: 一、搭建调试接口 写代码之前,得先考虑要写的页面从什么地方跳转进来,那么首先要建...
  • fjienigui
  • fjienigui
  • 2015年12月22日 16:31
  • 457

2016个人总结

毕业一年半,以前没有想过写个人总结,但今年可能无意间看到别人往年的个人总结,而且自己在2016年也算做了挺多事,所以想记录下2016发生的事情,记录下自己的成长。本来应该昨天写的,但是昨天看完跨年从深...
  • DoublesRed
  • DoublesRed
  • 2017年01月01日 11:09
  • 1342

2018年1月25日的工作总结

PS自设旅游类APP一级分类的UI页面
  • Z1575248622
  • Z1575248622
  • 2018年01月25日 14:11
  • 45
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:syslog的使用方法个人小结
举报原因:
原因补充:

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