场景:公司需要一套管理日志的系统,主语言是PHP,因此希望用PHP做。
疑问:日志是一个较频繁的操作,来源会来自四方八面各个系统,如何节约网络传输中的资源和耗时也是一个问题。
询问:想请问下大家一般都会怎么设计或是使用到什么技术去做这个系统,能达到较优方案?
谢谢。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
正好我自己开发了套日志管理系统
xloger其中也有一个写好的php接口, 这东西能实时监控服务上trace的信息, 也能把分布式的各个服务器日志统一收集到一台机器上. 只有监控或发生错误时, 才会向日志服务器发送日志消息, 无人打开web监控的时候, 只有1-2ms的查询是否要发送日志的消耗.
php使用socket管道通信发送日志消息, 速度比http快上n倍
给你看下代码示例:
"xloger", "age" => 20 ); // trace 监控信息 XLoger::log("参数1", uniqid(), $user ); // 以下代码将产生notice和warning $a = $user['notice']; foreach ($a as $v) { } // 发起两个接口访问 for($i=2; $i--;){ $result = file_get_contents("http://localhost:8084/child.php?i=$i&xloger_thread=".XLoger::thread() ); }
log("display xloger_thread", $_REQUEST['xloger_thread']);
访问test.php, 打开web监控, 会看到如下实时信息:
][2]
test.php 消耗了22ms, 由内部两个子http请求和一些运算累加组成, 这里显示了在代码里log的信息, 错误的信息, 文件日志, 以及这些代码发生的文件及代码行.
如果你用 echo, var_dump 等调试, 会影响页面内容输出, 线上更不允许这么调试. 通过这样的log, 就可以在一个第三方的页面上查看调试信息, 这也便是当初我要做这个东西的原因.
这东西一起在公司内部用, 所以没太用心去完善它, 文档也没写好. 如果你需要, 可以加我微信(idollo), 几个命令就可以配置好(请装好nodejs环境以及php安装并启用sockets模块).
再看下输出日志保存到指定服务器的:
require "/phplibs/xloger.php"; echo ""; echo "写入10000条日志\n"; $loger = XLoger::fileLoger("test_{month}{day}.log"); $start = microtime(true); for($i=0; $ilog($i, uniqid()); } $end = microtime(true); echo("Network fileloger time: ".($end-$start)."\n" ); $start = microtime(true); for($i=0; $i";以及日志文件也记录了简略的日志代码行和请求信息:
"; echo "写入10000条日志\n"; $loger = XLoger::fileLoger("test_{month}{day}.log"); $start = microtime(true); for($i=0; $ilog($i, uniqid()); } $end = microtime(true); echo("Network fileloger time: ".($end-$start)."\n" ); $start = microtime(true); for($i=0; $i";
以及日志文件也记录了简略的日志代码行和请求信息:
正好我自己开发了套日志管理系统
xloger
其中也有一个写好的php接口, 这东西能实时监控服务上trace的信息, 也能把分布式的各个服务器日志统一收集到一台机器上.
只有监控或发生错误时, 才会向日志服务器发送日志消息, 无人打开web监控的时候, 只有1-2ms的查询是否要发送日志的消耗.
php使用socket管道通信发送日志消息, 速度比http快上n倍
给你看下代码示例:
访问test.php, 打开web监控, 会看到如下实时信息:
][2]
test.php 消耗了22ms, 由内部两个子http请求和一些运算累加组成, 这里显示了在代码里log的信息, 错误的信息, 文件日志, 以及这些代码发生的文件及代码行.
如果你用 echo, var_dump 等调试, 会影响页面内容输出, 线上更不允许这么调试. 通过这样的log, 就可以在一个第三方的页面上查看调试信息, 这也便是当初我要做这个东西的原因.
这东西一起在公司内部用, 所以没太用心去完善它, 文档也没写好. 如果你需要, 可以加我微信(idollo), 几个命令就可以配置好(请装好nodejs环境以及php安装并启用sockets模块).
再看下输出日志保存到指定服务器的: