一、syslog日志服务:
1、守护进程: syslog
2、端口: 514
3、配置文件 :/etc/syslog.conf
4、常见日志文件 :
/var/log/dmesg       内核引导信息日志
/var/log/message     标准系统错误信息日志
/var/log/maillog     邮件系统信息日志
/var/log/cron        计划任务日志
/var/log/secure      安全信息日志
二、 配置文件:
syslog的默认配置文件如下
-----------------------------------------------------------------
[root@server ~]# vim /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.*     
-----------------------------------------------------------------
配置文件中每行表示一个项目,格式为: facility.level    action
由两个部分组成 :
第一部分:选择条件(可以有一个或者多个条件),分为两个字段,设备(服务)和级别。
第二部分:操作动作;
    1、选择条件
    选择条件本身分为两个字段,之间用一个小数点( .)分隔。前一字段是一项服务,后一字段是一个优先级。选择条件是对消息类型的一种分类,这种分类便于 人们把不同类型的消息发送到不同的地方。星号*表示所有的服务或优先权,依赖*在句点的前面或后面而定,关键字none表示不记录给定服务的优先权(比如默认配置中的mai.none)。在同一个syslog配置行上允许出现一个以上的选择条件,但必须用分号(;)隔开, 也可以用叹号(!)排除掉某些级别,比如mai.!info。
    常见facility:
kern                 内核信息;
user                 用户进程信息;
mail                 电子邮件相关信息;
daemon           后台进程相关信息;;
auth                与安全权限相关的命令;
authpriv             包括特权信息如用户名在内的认证活动(授权信息);
cron                 计划任务信息;
syslog           系统日志信息
lpr              打印服务相关信息。
news             新闻组服务器信息
uucp                 uucp 生成的信息
local0----local7         本地用户信息  
    2、重要级:
重要级是选择条件的第二个字段,它代表消息的紧急程度。
按严重程度由低到高排序:
debug        不包含函数条件或问题的其他信息
info             提供信息的消息
none         没有重要级,通常用于排错
notice       具有重要性的普通条件
warning      预警信息
err          阻止工具或某些子系统部分功能实现的错误条件
crit             阻止某些工具或子系统功能实现的错误条件
alert            需要立即被修改的条件
emerg        该系统不可用
((不提倡使用关键字error(替换为err), warn(替换为warning) 和 panic(替换为emerg),在任何情况下都不提倡 ))
    不同的服务类型有不同的优先级,数值较大的优先级涵盖数值较小的优先级。如果某个选择条件只给出了一个优先级而没有使用任何优先级限定符,对应于这个优先级的消息以及所有更紧急的消息类型都将包括在内。比如说,如果某个选择条件里的优先级是“ warning”,它实际上将把“warning”、 “err”、“crit”、“alert”和“emerg”都包括在内。
    3、操作动作
日志信息可以分别记录到多个文件里,还可以发送到命名管道、其他程序甚至另一台机器。
syslog 主要支持以下活动:
file                     指定文件的绝对路径
terminal 或 prin        完全的串行或并行设备标志符
@host( @IP地址)    远程的日志服务器


------------------------------------------------------------------------------------
NT系统下安装evtsys转为syslog,
1、evtsys 有个LP的版本,支持发送4096字节的记录,标准版最大单条日志长度为1k
2、evtsys的注册表位置HKLM\SOFTWARE\ECN\EvtSys\3.0
3、过滤器配置文件设置如下(保存为evtsys.cfg到c:\windows\system32目录),过滤器书写格式参考eventlog的过滤器
XPath:Application:<Select Path="Application">*[System[(Level=1 or Level=2)]]</Select>
'应用程序日志转发关键和错误级别
XPath:Security:<Select Path="Security">*</Select><Suppress Path="Security">*[System[(EventID=4688 or EventID=4689)]]</Suppress>
'安全日志转发除进程创建和进程终止之外的全部日志
XPath:Setup:<Select Path="Setup">*[System[(Level=1 or Level=2)]]</Select>
'setup日志转发关键和错误日志(这个日志一般内容很少)
XPath:System:<Select Path="System">*[System[(Level=1 or Level=2 or Level=3)]]</Select>
'系统日志转发关键、错误和警告日志
 

------------------------------------------------------------------------------------
syslog-ng的scripts目录中的文件作用如下:
#请注意,.sh结尾的是bash脚本,可直接执行;而.pl的是perl脚本,使用perl执行;而.php结尾的是php脚本,需使用php命令执行。
1、logrotate.php
对php-syslog-ng中的表进行日志循环,其与系统的logrotate不同。该脚本的执行结果,是把每天的日志表备份起来,并创建一个新的日志表供读写。在crontab下,每天自动执行一次。(手册里面有提到)
2、syslog2mysql.sh
该脚本是用于创建mysql的pipe管道,让syslog-ng可通过该管道写入mysql中。在crontab下,系统启动的时候自动运行。
3、reloadcache.php
该脚本的作用是,当有新的host加入syslog-ng后,更新mysql中的信息。在crontab下,每5分钟运行一次。(手册里面有提到)
4、resetusers.sh
用于重置用户表,当忘记admin密码的时候,可运行它。重置后,管理员用户名和密码都是admin。(待测试)
5、drop-old-tables.php
当php-syslog-ng运行一段时间后,由logrotate.php可能会产生大量的旧日志表。使用这个脚本,可删除具有相同前缀的表,例如logs_*等,可方便管理。(待测试)
6、dbgen.pl
该脚本用于产生一些演示数据,在测试php-syslog-ng是否正常时可以运行,其会插入大量数据到mysql中。(手册里面有提到)
因其使用perl编写,故需要使用Net::MySQL模块。