解析php如何将日志写进syslog


Posted in PHP onJune 28, 2013

在做项目的时候们为了方便运维,我们经常需要将系统日志写入系统syslog,下边我们就介绍一下,在linux下php对syslog的操作:
在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

打开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
下面我们在配置文件中定义一个自己设备的日志规则: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级别以及以上的日志会记录到这里
ok,到现在我们已经在ubuntu中设置好了我们需要的日志,下面我们用php中的syslog将日志写到ubuntu中的syslog中。
下面直接上php代码:
openlog("Event1.0", LOG_PID | LOG_PERROR, LOG_LOCAL4);
syslog($level, "LOG MESSAGE: " . $errinfo);
closelog();

以上各方法的具体用法请查看PHP的API,具体用法不在这里赘述。
其中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 相关文章推荐
PHP5 安装方法
Jan 15 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
PHP 年龄计算函数(精确到天)
Jun 07 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
高性能PHP框架Symfony2经典入门教程
Jul 08 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
Dec 09 PHP
CodeIgniter实现从网站抓取图片并自动下载到文件夹里的方法
Jun 17 PHP
laravel5创建service provider和facade的方法详解
Jul 26 PHP
php中如何执行linux命令详解
Nov 06 PHP
PHP实现限制域名访问的实现代码(本地验证)
Sep 13 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
Jun 28 #PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 #PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 #PHP
解析php中如何直接执行SHELL
Jun 28 #PHP
zend Framework中的Layout(模块化得布局)详解
Jun 28 #PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 #PHP
解析zend Framework如何自动加载类
Jun 28 #PHP
You might like
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
js代码实现微博导航栏
2015/07/30 PHP
laravel 框架配置404等异常页面
2019/01/07 PHP
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
JavaScript学习笔记之取数组中最大值和最小值
2016/03/23 Javascript
javascript基础知识
2016/06/07 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
简单的Vue异步组件实例Demo
2017/12/27 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
vue自定义switch开关组件,实现样式可自行更改
2019/11/01 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
在Python中使用第三方模块的教程
2015/04/27 Python
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
python将控制台输出保存至文件的方法
2019/01/07 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
《分一分》教学反思
2014/04/13 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
党纪处分决定书
2015/06/24 职场文书
巾帼建功标兵先进事迹材料
2016/02/29 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
浅谈MySQL中的六种日志
2022/03/23 MySQL
nginx设置资源请求目录的方式详解
2022/05/30 Servers