php将日志写进syslog文件的方法分享

发布时间:2019-07-27编辑:脚本学堂
在linux中,syslog记录着系统日志、错误日志等,大家知道php也可以将日志记录在syslog中吗?有兴趣的朋友,参考下本文给出的方法吧。

介绍下在linux系统中,php对syslog的操作方法:
1,在linux中配置syslog
在linux中,facility(设备)有以下几种:

AUTH 普通安全/授权消息
AUTHPRIV 私有安全/授权消息
CRON 定时器进程
DAEMON 守护进程
KERN 内核消息
LOCAL0 ... LOCAL7 本地应用,在windows上不支持
LPR 行式打印机
MAIL 邮件服务
NEWS 新闻服务
SYSLOG 由syslogd内部产生的消息
USER 通用的用户级信息
UUCP UUCP子系统

登录linux系统,进入/etc目录,输入:
vim syslog.conf

2,打开syslog的配置文件
可以看到syslog的所有配置信息,这里定义了每种日志类型存储日志所使用的条件,如:

复制代码 代码示例:
daemon.* -/var/log/daemon.log

定义了daemon所产生的日志的保存位置,其中daemon为日志类型,“*”代表将所有级别的日志都放到该文件。
格式为:
facility。level -日志文件保存的路径,如-/var/log/daemon.log
level包括:

emerg -该系统不可用
alert -需要立即被修改的条件
crit -阻止某些工具或子系统功能实现的错误条件
err -阻止工具或某些子系统部分功能实现的错误条件
warning -预警信息
notice -具有重要性的普通条件
info -提供信息的消息
debug -不包含函数条件或问题的其他信息
none -没有重要级,通常用于排错
* 所有级别,除了none

3,在配置文件中定义一个自己设备的日志规则:

复制代码 代码示例:
local4.info -/var/log/

接下来执行命令/etc/init.d/sysklogd restart或/etc/init.d/sysklogd reload使新增的配置生效。

开始测试新增的日志规则了:
1,输入命令

复制代码 代码示例:
logger -p local4.info " my test log"

2,执行命令

复制代码 代码示例:
tail /var/log/event_log.log

可以看到自己写入的日志信息:
注意:syslog.conf中local4.info 代表所有info级别以及以上的日志会记录到这里。

到此,已在ubuntu中设置好了需要的日志。

下面便开始使用php中的syslog将日志写到ubuntu中的syslog中。
参考代码如下:

<?php
//写日志到syslog
openlog("Event1.0", LOG_PID | LOG_PERROR, LOG_LOCAL4);
syslog($level, "LOG MESSAGE: " . $errinfo);
closelog();
?>

说明:
其中openlog的第一个参数,是日志标识,该标识会自动加在日志信息的开始,用来表示是什么系统写入的日志。
由于这里想要将日志写入local4.info,所以第三个参数需使用LOG_LOCAL4,该参数表示写入日志的设备信息。
syslog中$level为日志级别,包括:

LOG_EMERG system is unusable
LOG_ALERT action must be taken immediately
LOG_CRIT critical conditions
LOG_ERR error conditions
LOG_WARNING warning conditions
LOG_NOTICE normal, but significant, condition
LOG_INFO informational message
LOG_DEBUG debug-level message

第二个参数为具体的日志内容。

关于php写日志到syslog中的方法,就介绍这些吧,希望对大家有所帮助。