高性能的PHP日志系统 SeasLog

PHP日志系统SeasLog入门到封装 阿里云协同办公工具Teambition 0元试用>>> ... 阅读详情

参考文档:http://neeke.github.io/SeasLog/

什么是SeasLog

SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志。

一.什么是日志系统

1. 记录系统运行时的信息

2. 系统日志、应用程序日志、安全日志

3. 日志功能不应该影响到用户的正常使用

 

二.为什么需要日志功能

1. 了解系统运行情况

2. 记录用户操作信息

3. 收集数据

 

三.为什么选择SeasLog

1. 高性能(C语言做的 先将日志写入内存达到一定量再写入文件比频繁写入文件好)。

2. 无需配置

3. 功能完善、

4. 使用简单

 

四.安装SeasLog

1.首先要下载SeasLog

http://pecl.php.net/package/SeasLog

$lastLogger_1 = SeasLog::getLastLogger();

SeasLog::setLogger('testModule/app1');
$lastLogger_2 = SeasLog::getLastLogger();


2.在windows系统配置SeasLog

找到适合自己php版本的seaslog.dll,将 php_seaslog.dll放在php安装目录的的ext下面

修改php.ini的配置,并增加应的参数配置

seaslog.disting_type = 1 开启以type分文件,即log文件区分info\warn\erro

seaslog.disting_by_hour = 1 开启每小时划分一个文件

seaslog.use_buffer = 1 开启buffer。默认关闭。当开启此项时,日志预存于内存,当请求结束时(或异常退出时)一次写入文件。

seaslog.buffer_size = 100 设置缓冲数量为100. 默认为0,即无缓冲数量限制.当buffer_size大于0时,缓冲量达到该值则写一次文件.

seaslog.level = 3 记录的日志级别.默认为0,即所有日志均记录。当level为1时,关注debug以上级别(包括debug),以此类推。level大于8时,所有日志均不记录



保存php.ini并且重新服务器语言,然后运行phpinfo();可以看到

五.SeasLog Logger的使用

 1.获取与设置basePath 

$basePath_1 = SeasLog::getBasePath();
SeasLog::setBasePath('/log/base_test');
$basePath_2 = SeasLog::getBasePath();

直接使用 SeasLog::getBasePath(),将获取php.ini(seaslog.ini)中设置的seaslog.default_basepath 的值。

使用 SeasLog::setBasePath() 函数,将改变 SeasLog::getBasePath() 的取值。

2.设置logger与获取lastLogger


$lastLogger_1 = SeasLog::getLastLogger();

   SeasLog::setLogger('testModule/app1');
   $lastLogger_2 = SeasLog::getLastLogger();

与basePath相类似的,

直接使用 SeasLog::getLastLogger(),将获取php.ini(seaslog.ini)中设置的seaslog.default_logger 的值。

使用 SeasLog::setLogger() 函数,将改变 SeasLog::getLastLogger() 的取值。


3.快速写入log

上面已经设置过了basePath与logger,于是log记录的目录已经产生了,

log记录目录 = basePath / logger / {fileName}.log log文件名,以 年月日 分文件,如今天是2014年02月18日期,那么 {fileName} = 20140218;

还记得 php.ini 中设置的 seaslog.disting_type 吗?

默认的 seaslog.disting_type = 0,如果今天我使用了 SeasLog ,那么将产生最终的log文件:

  • LogFile = basePath / logger / 20140218.log
  • log格式统一为: {type} | {pid} | {timeStamp} |{dateTime} | {logInfo}

<?php
           SeasLog::setBasePath('E:www/seaslog/log/base_test');
          SeasLog::info('this is a info');
     ?>

 seaslog.disting_type = 0   产生文件 20160224.log

   seaslog.disting_type = 1 , seaslog.disting_by_hour = 0     产生文件 info.20160224.log

      seaslog.disting_type = 1 ,  seaslog.disting_by_hour   =  1    产生文件  info.2016022411.log

 打开文件显示:
 log格式统一为:
 {type} | {pid} | {timeStamp}      |{dateTime}            | {logInfo}
  info       | 10144 | 1456283442.408 | 2016:02:24 11:10:42 | this is a info 


  4.常量列表

SeasLog 共将日志分成8个级别

  • SEASLOG_DEBUG "debug"
  • SEASLOG_INFO "info"
  • SEASLOG_NOTICE "notice"
  • SEASLOG_WARNING "warning"
  • SEASLOG_ERROR "error"
  • SEASLOG_CRITICAL "critical"
  • SEASLOG_ALERT "alert"
  • SEASLOG_EMERGENCY "emergency"
var_dump(SEASLOG_DEBUG,SEASLOG_INFO,SEASLOG_NOTICE);
/*
string('debug') debug级别
string('info')  info级别
string('notice') notice级别
*/

5.SeasLog Analyzer的使用

       快速统计某类型log的count值

SeasLog在扩展中使用管道调用shell命令 grep -wc快速地取得count值,并返回值(array || int)给PHP。

 $countResult_1 = SeasLog::analyzerCount();
     $countResult_2 = SeasLog::analyzerCount(SEASLOG_WARNING);
     $countResult_3 = SeasLog::analyzerCount(SEASLOG_ERROR,date('Ymd',time()));

例子:
  1. <span style="font-size:18px;"><?php   
  2. SeasLog::setBasePath('E:www/seaslog/log/base_test');  
  3.   
  4. SeasLog::log(SEASLOG_ERROR,'this is a error test by ::log');  
  5. SeasLog::debug('this is a {userName} debug',array('{userName}' => 'neeke'));  
  6. SeasLog::info('this is a info log');  
  7. SeasLog::notice('this is a notice log');  
  8. SeasLog::warning('your {website} was down,please {action} it ASAP!',array('{website}' => 'github.com','{action}' => 'rboot'));  
  9. SeasLog::error('a error log');  
  10. SeasLog::critical('some thing was critical');  
  11. SeasLog::alert('yes this is a {messageName}',array('{messageName}' => 'alertMSG'));  
  12. SeasLog::emergency('Just now, the house next door was completely burnt out! {note}',array('{note}' => 'it`s a joke'));  
  13. ?></span>  
运行:
  1. <span style="font-size:18px;"><?php </span>  
  1. <span style="font-size:18px;">$data = SeasLog::analyzerCount();  
  2. print_r($data);  
  3. echo "<br/>";  
  4. $data1 = SeasLog::analyzerCount(SEASLOG_WARNING);  
  5. print_r($data1);  
  6. echo "<br/>";  
  7. $data2 = SeasLog::analyzerCount(SEASLOG_ERROR,date('Ymd',time()));  
  8. print_r($data2);  
  9. echo "<br/>";</span>  
  1. <span style="font-size:18px;">?></span>  
输出:
Array ( [debug] => 2 [info] => 2 [notice] => 2 [warning] => 2 [error] => 4 [critical] => 2 [alert] => 2 [emergency] => 2 ) 
2
4

获取某类型log列表

SeasLog在扩展中使用管道调用shell命令 grep -w快速地取得列表,并返回array给PHP

运行:

$detailErrorArray_inAll   = SeasLog::analyzerDetail(SEASLOG_ERROR);
$detailErrorArray_today   = SeasLog::analyzerDetail(SEASLOG_ERROR,date('Ymd',time()));


echo "<pre>";
print_r($detailErrorArray_inAll);
echo "</pre>";


echo "<pre>";
print_r($detailErrorArray_today);
echo "</pre>";

输出:


SeasLog::analyzerDetail(SEASLOG_ERROR,date('Ymd',time()));
只取得当前模块下,当前一天内,level为SEASLOG_ERROR 的信息列表:

同理,取当月
$detailErrorArray_mouth = SeasLog::analyzerDetail(SEASLOG_ERROR,date('Ym',time()));


使用SeasLog进行健康预警


预警的配置
[base]
wait_analyz_log_path = /log/base_test

[fork]
;是否开启多线程 1开启 0关闭
fork_open = 1

;线程个数
fork_count = 3

[warning]
email[smtp_host] = smtp.163.com
email[smtp_port] = 25
email[subject_pre] = 预警邮件 -
email[smtp_user] = seaslogdemo@163.com
email[smtp_pwd] = seaslog#demo
email[mail_from] = seaslogdemo@163.com
email[mail_to] = gaochitao@weiboyi.com
email[mail_cc] = ciogao@gmail.com
email[mail_bcc] =

[analyz]
; enum
; SEASLOG_DEBUG      "debug"
; SEASLOG_INFO       "info"
; SEASLOG_NOTICE     "notice"
; SEASLOG_WARNING    "warning"
; SEASLOG_ERROR      "error"
; SEASLOG_CRITICAL   "critical"
; SEASLOG_ALERT      "alert"
; SEASLOG_EMERGENCY  "emergency"

test1[module] = test/bb
test1[level] = SEASLOG_ERROR
test1[bar] = 1
test1[mail_to] = gaochitao@weiboyi.com

test2[module] = 222
test2[level] = SEASLOG_WARNING

test3[module] = 333
test3[level] = SEASLOG_CRITICAL

test4[module] = 444
test4[level] = SEASLOG_EMERGENCY

test5[module] = 555
test5[level] = SEASLOG_DEBUG
crontab配置
;每天凌晨3点执行
0 3 * * * /path/to/php /path/to/SeasLog/Analyzer/SeasLogAnalyzer.php
安装 Php模块 seaslog 参考链接:https://www.imooc.com/qadetail/119739 首先查看配置信息里的Thread Safety的值,enabled代表TS,disabled代表NTS; 到 PHP 安装扩展的官网 http://pecl.php.net/package/SeasLog/1.8.4/windows,下载对应自己 PHP 版本的扩展 .dll 文件,如果用的是 apa... 阅读详情

相关推荐

Marvell 88E6390x交换芯片:从零构建No-CPU模式网络交换系统

本文详细介绍了如何为Marvell 88E6390x以太网交换芯片构建No-CPU模式网络交换系统。通过解析其核心价值与硬件准备,并手把手指导使用CodeBlocks、IMPGUI和SwitchGUI等软件工具进行配置代码编写、镜像生成与烧录,最终实现交换芯片脱离外部CPU独立工作,适用于成本敏感、空间受限的嵌入式网络设备设计。

plant的博客 482

高效的PHP日志管理工具 SeasLog

PHP是一种广泛使用的编程语言,SeasLog是一个高性能的PHP日志管理系统,可以帮助我们轻松地记录和管理PHP应用程序的日志。SeasLog是一个强大且高性能的PHP日志管理工具,可以帮助我们轻松地记录和管理PHP应用程序的日志。通过安装和配置SeasLog扩展,我们可以在应用程序中使用简单的API来记录日志,并使用提供的管理和查询方法对日志进行处理。通过合理地使用SeasLog,我们可以更好地了解和监控应用程序的运行情况,及时发现和解决问题,提升应用程序的稳定性和性能。方法设置了日志存储的路径。

CnForth的博客 756

手把手教你用nRF52832+RFX2401C设计远距离蓝牙模块(附完整原理图/PCB文件)

本文详细介绍了如何利用nRF52832 SoC与RFX2401C射频前端芯片设计远距离蓝牙模块,涵盖芯片选型、阻抗匹配、PCB布局等关键环节。通过实战指南和完整原理图/PCB文件,帮助工程师实现输出功率可达20dBm的蓝牙模块设计,适用于智能家居、运动追踪等物联网应用。

weixin_29214199的博客 287

【PHP调试篇】PHP高性能日志组件SeasLog

简述 什么是SeasLog SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志。 为什么使用SeasLog 无论在什么应用中,log日志都是架构中不可缺少的一个重要组成部分,它通常是系统或软件、应用的运行记录。通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往...

weixin_30817749的博客 389

狂神说docker(最全笔记)

一.Docker入门 1. Docker 为什么会出现 2. Docker的历史 3.Docker最新超详细版教程通俗易懂 Docker是基于Go语言开发的!开源项目 官网 官方文档Docker文档是超详细的 仓库地址 4. 虚拟化技术和容器化技术对比 4.1. 虚拟化技术的缺点 资源占用十分多 冗余步骤多 启动很慢 2.2. 容器化技术 比较Docker和虚拟化技术的不同 传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软.

qq_21197507的博客 5万+

YOLOv8改进:基于EfficientNetV2均衡缩放网络的特征提取层优化【YOLOv8】

YOLO(You Only Look Once)系列模型以其高效的实时目标检测能力而闻名。YOLOv8作为该系列的最新版本,通过引入改进的网络结构和算法优化,进一步提升了目标检测的性能。然而,YOLOv8在特征提取阶段的网络结构仍有改进的空间。EfficientNetV2是一种基于均衡缩放的卷积神经网络,它通过优化网络的宽度、深度和分辨率来实现高效的特征提取。与之前的EfficientNet版本相比,EfficientNetV2在速度和精度上都有显著提升,尤其在处理复杂目标检测任务时表现尤为突出。

博客 1582

php 日志收集系统,ThinkPHP集成Seaslog——高性能日志系统

本文内容1、为什么需要日志功能呢2、学会使用Seaslog3、在实际项目中使用Seaslog一、什么是日志系统1、记录系统运行的信息;2、系统日志、应用日志、安全日志;二、为什么需要日志功能1、了解系统运行情况;2、记录用户操作信息;3、搜集数据;三、为什么选择Seaslog1、高性能;Seaslog是C语音开发的,自带缓冲池,日常先写入内存,达到一定量才一次性写入文件中,不用频繁的写入日志。2、...

weixin_39537977的博客 581

Android 13.0 展讯平台关机充电动画横屏显示修改

在13.0的系统rom定制化开发中,在关于展讯平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范, 所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能

安卓兼职framework和app工程师的博客 409

php 日志收集系统,php高性能日志系统 seaslog 的安装与使用方法分析

本文实例讲述了php高性能日志系统 seaslog 的安装与使用方法。分享给大家供大家参考,具体如下:一、什么是日志系统一般用于记录系统运行时的信息,一般分为三类:系统日志,应用程序日志,安全日志。日志功能不能影响用户的正常使用。二、为什么需要日志功能1、了解系统运行情况2、记录用户操作信息3、收集数据三、为什么选seaslog1、高性能(使用C语言)2、无需配置3、功能完善,使用简单四、安装se...

weixin_42513269的博客 403

【花雕学编程】Arduino FOC 之AS5048A磁编码器模块

您的硬件平台、使用场景和Arduino版本可能影响使用方法的选择。在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。1、高性能电机控制:FOC是一种高级的电机控制算法,可以精准控制PMSM(永磁同步电机)和BLDC(无刷直流)电机,实现平滑的转速和扭矩输出。

雕爷学编程 1496

机器学习初探——用线性回归预测股价趋势

在进入代码之前,先建立一个大框架。类型一句话解释金融中的应用监督学习给机器“标准答案”让它学预测股价(历史数据→未来价格)无监督学习不给答案,让机器自己找规律把相似股票自动归类、发现异常交易强化学习让机器通过“试错”学习最优策略AI自动交易、量化策略优化我们现阶段只学“监督学习”——这是最常用、最容易上手的。准备一堆“特征”和对应的“标签”(比如:历史的第N天 → 那天的价格)喂给机器一个“算法”(比如线性回归)机器“拟合”出一个规律(比如找到一条最合适的直线)

109

php高性能的日志系统-seaslog

一.什么是日志系统? 记录系统运行时候的日志信息,系统日志,应用日志、安全日志 二、为什么需要日志系统 1.了解系统的运行情况 2.记录用户的操作信息 3.收集数据 三.为什么选择seaslog 1.高性能 2.无需配置 3.功能完善,使用简单 四.如何安装seaslog 1.打开https://pecl.php.net 下载seaslog扩展包 wget http://pecl.php.net/get/SeasLog-2.1.0.tgz 解压文件 tar -zxvf SeasLog-2.1.0.tgz

u014265398的博客 621

D457深度相机调试记录(max96712+max9295A)

使用max96712解串器解4路D457相机。采集深度相机Depth和RGB流。

navy2015_163的博客 1264

php 笔记日志系统,高性能的PHP日志系统—SeasLog

为什么需要日志功能1.没有日志,只能等到用户反馈,系统不能用,才可以3收集:比如500的错误,知道这个错误是什么引起的查看全部3-1 在Thinkphp中集成SeasLog(有2种方法)1.直接在控制器中去调用SeasLog对应的方法。比如需要记录debug的信息直接写debug的方法。SeasLog::info('test');2.既然用了框架,那么就依托框架的特性去集成。Thinkphp中有一...

weixin_34981046的博客 932

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

php高性能日志系统,高性能的PHP日志系统 SeasLog

参考文档:http://neeke.github.io/SeasLog/什么是SeasLogSeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志。一.什么是日志系统1. 记录系统运行时的信息2. 系统日志、应用程序日志、安全日志3. 日志功能不应该影响到用户的正常使用二.为什么需要日志功能1. 了解系统运行情况2....

weixin_39854440的博客 385

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

*使用高性能的php日志系统 --seaslog

学习使用之前我们首先要搞明白,日志能给我们解决什么问题 什么是日志系统?? 1、记录系统运行时的信息 2、记录日志、应用程序、安全日志 3、日志功能不应该影响到用户的正常使用 为什么需要日志系统?? 1、了解系统运行情况 2、记录用户操作信息 3、收集数据(如 500错误,出现了多少次) 为什么选择seaslog?? 1、高性能(C语言写的) 2、无需配置(先写闪存,达到一定...

西瓜的博客 2776

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

日志 php_高性能的PHP日志系统 SeasLog 使用

简介使用SeasLog好处log日志,通常是系统或软件、应用的运行记录。通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。php内置error_log、syslog函数功...

weixin_34365489的博客 386

PHP扩展高性能日志系统SeasLog简单上手

Windows部分: -------------------------------------------------------- https://pecl.php.net/package/SeasLog/1.6.9/windows 根据PHP版本 是否线程安全 进行选择 这些都可以在phpinfo里查得到 下载之后 把里面的php_seaslog.dll拷贝到PHP的安装目录下的...

gb4215287的博客 359

php date 毫秒_高性能的PHP日志系统 SeasLog 使用

简介使用SeasLog好处log日志,通常是系统或软件、应用的运行记录。通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。php内置error_log、syslog函数功...

weixin_39978350的博客 270

php 日期转毫秒_高性能的PHP日志系统 SeasLog 使用

简介使用SeasLog好处log日志,通常是系统或软件、应用的运行记录。通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。php内置error_log、syslog函数功...

weixin_39878760的博客 144

php的高性能日志系统 seaslog 的安装与使用

一、什么是日志系统    一般用于记录系统运行时的信息,一般分为三类:系统日志,应用程序日志,安全日志。日志功能不能影响用户的正常使用。二、为什么需要日志功能    1、了解系统运行情况    2、记录用户操作信息    3、收集数据    三、为什么选seaslog    1、高性能(使用C语言)    2、无需配置    3、功能完善,使用简单    四、安装seaslog下载seaslog,...

weixin_33834137的博客 214

高性能PHP日志系统--SeasLog学习

认识SeasLog为什么需要日志功能1.了解系统运行情况 (比如一个用户进入我们网站时遇到404错误或其他500错误,或者对接的短信API接口崩溃时,我们可以第一时间知道这个消息,否则需要等到用户反馈才得知); 2.1.记录用户操作信息 (比如有一个电子商城,我们希望知道用户在下单时,他传的所有参数是什么,我们也希望知道返回给用户的所有参数是什么。这样可以更好的知道系统运作的流程); 3.1

liuzp111的专栏 2575
上一篇: PHP 获取今日、昨日、本周、上周、本月的等等常用的起始时间戳和结束时间戳的时间处理类
下一篇: PHP扩展高性能日志系统SeasLog简单上手
A_青涩
博客等级 码龄9年 420粉丝 73原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值