解析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 相关文章推荐
php去除重复字的实现代码
Sep 16 PHP
PHP安全性漫谈
Jun 28 PHP
php对mongodb的扩展(初出茅庐)
Nov 11 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
PHP处理Json字符串解码返回NULL的解决方法
Sep 01 PHP
合格的PHP程序员必备技能
Nov 13 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
THINKPHP5.1 Config的配置与获取详解
Jun 08 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
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
php中http_build_query 的一个问题
2012/03/25 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
javascript中window.event事件用法详解
2012/12/11 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
Angularjs过滤器使用详解
2016/05/25 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
基于Vue实现tab栏切换内容不断实时刷新数据功能
2017/04/13 Javascript
ES6新特性:使用export和import实现模块化详解
2017/07/31 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
Python分支语句与循环语句应用实例分析
2019/05/07 Python
OpenCV搞定腾讯滑块验证码的实现代码
2019/05/18 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
论文诚信承诺书
2014/05/23 职场文书
积极向上的团队口号
2014/06/06 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS