SeasLog 2.1.0 版本发布 支持 PHP7.4 修复多处隐藏 Bug

栏目: 软件资讯 · 发布时间: 5年前

内容简介:2020年开工大吉! 历经一年全社区的使用和反馈,SCG(SeasX Core Group)团队修复了多处SeasLog隐藏Bug,同时支持PHP7.4。 SeasLog地址: PECL: http://pecl.php.net/package/SeasLog Github: https://github.com/S...

2020年开工大吉!

历经一年全社区的使用和反馈,SCG(SeasX Core Group)团队修复了多处SeasLog隐藏Bug,同时支持 PHP 7.4。

SeasLog 2.1.0 版本发布 支持 PHP7.4 修复多处隐藏 Bug

SeasLog地址:

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

Github: https://github.com/SeasX/SeasLog

国内镜像:https://gitee.com/neeke/SeasLog

SeasLogger(composer包项目)地址:

Github: https://github.com/SeasX/seas-logger

国内镜像:https://gitee.com/neeke/seas-logger

composer包地址:https://packagist.org/packages/seasx/seas-logger

Chang Log

2.1.0

  • 支持 PHP7.4
  • 支持 getBufferCount 函数
  • 支持模板中使用%B预置变量,获取BasePath值
  • 增强trim_wrap.
  • 修复 issue #265
  • 修复在使用trace_performance在某些场景下core dump问题
  • 修复在模块初始化之前获取PHP错误时的问题
  • 修复在PHP7下使用php-stream update宏问题
  • 修复在PHP7下在stream更新后不能写入文件的问题

2.0.2

  • Fixed issue #175 支持自动记录PHP慢方法的TopN.

  • Fixed 修复模板中的预设变量 %C ,支持 Class::Action.

1.9.1

  • Fixed issue #249 添加单元测试例,修复setLogger的bug.

  • Fixed 修复 mac osx的编译错误.

1.9.0

  • New Feature #240 增加方法 SeasLog::setRequestVariable(key,value),可以支持用户使用swoole等框架时改变SeasLog预设变量

  • New Feature #243 Log方法第一个参数支持数组传递,如 SeasLog::debug(array).

  • Fixed issue #110 支持构造函数,可以使用 New SeasLog().

  • Fixed issue #234 #236 修复SeasLog::analyzerDetail 函数Bug.

  • Fixed issue #245 为 analyzerCount 和 analyzerDetail添加单元测试例.

日志模板预设变量表

SeasLog提供了下列预设变量,可以直接使用在日志模板中,将在日志最终生成时替换成对应值。

  • %L - Level 日志级别。

  • %M - Message 日志信息。

  • %T - DateTime 如2017-08-16 19:15:02,受seaslog.default_datetime_format影响。

  • %t - Timestamp 如1502882102.862,精确到毫秒数。

  • %Q - RequestId 区分单次请求,如没有调用SeasLog::setRequestId($string)方法,则在初始化请求时,采用内置的static char *get_uniqid()方法生成的惟一值。

  • %H - HostName 主机名。

  • %P - ProcessId 进程ID。

  • %D - Domain:Port 域名:端口号,如:8080; Cli模式下为cli。

  • %R - Request URI 请求URI,如/app/user/signin; Cli模式下为入口文件,如CliIndex.php。

  • %m - Request Method 请求类型,如GET; Cli模式下为执行命令,如/bin/bash。

  • %I - Client IP 来源客户端IP; Cli模式下为local。取值优先级为:HTTP_X_REAL_IP > HTTP_X_FORWARDED_FOR > REMOTE_ADDR

  • %F - FileName:LineNo 文件名:行号,如UserService.php:118。

  • %U - MemoryUsage 当前内容使用量,单位byte。调用zend_memory_usage。

  • %u - PeakMemoryUsage 当前内容使用峰值量,单位byte。调用zend_memory_peak_usage。

  • %C - Class::Action 类名::方法名,如UserService::getUserInfo。

  • %B - BasePath路径,如/var/log/www。受seaslog.default_basepath和setBasePath影响。

为什么使用SeasLog

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

php内置error_log、syslog函数功能强大且性能极好,但由于各种缺陷(error_log无错误级别、无固定格式,syslog不分模块、与系统日志混合),灵活度降低了很多,不能满足应用需求。

好消息是,有不少第三方的log类库弥补了上述缺陷,如log4php、plog、Analog等(当然也有很多应用在项目中自己开发的log类)。其中以log4php最为著名,设计精良、格式完美、文档完善、功能强大。推荐。

不过log4php在性能方面表现非常差,下图是SeasLog与log4php的ab并发性能测试( 测试环境:Ubuntu12.04单机,CPU I3,内存 16G,硬盘 SATA 7200): 

SeasLog 2.1.0 版本发布 支持 PHP7.4 修复多处隐藏 Bug

那么有没有一种log类库满足以下需求呢:

  • 分模块、分级别

  • 配置简单(最好是勿须配置)

  • 日志格式清晰易读

  • 应用简单、性能很棒

SeasLog 正是应此需求而生。

目前提供了什么

  • 在PHP项目中便捷、规范地记录log

  • 可配置的默认log目录与模块

  • 指定log目录与获取当前配置

  • 初步的分析预警框架

  • 高效的日志缓冲、便捷的缓冲debug

  • 遵循 PSR-3 日志接口规范

  • 连接TCP端口,以RFC5424格式发送日志

  • 连接UDP端口,以RFC5424格式发送日志

  • 支持RequestId区分请求

  • 支持日志模板自定义

  • 自动记录错误、异常、性能日志(慢方法TopN)

目标是怎样的

  • 便捷、规范的log记录

  • 高效的海量log分析

  • 可配置、多途径的log预警

Q:SeasLog的性能究竟怎么样

A:
SeasLog 2.1.0 版本发布 支持 PHP7.4 修复多处隐藏 Bug

当SeasLog不开启buffer时,SeasLog是:syslog()函数的8.6倍、file_put_contents()函数的240倍、fwrite()单例情况下的36倍、fwrite()非单例情况下的211倍、monolog不开启buffer时的41倍;当SeasLog开启buffer且buffer_size为100时,SeasLog是:syslog()函数的250倍、file_put_contents()函数的6962倍、fwrite()单例情况下的1052倍、fwrite()非单例情况下的6127倍、monolog开启buffer且buffer size为100时的118倍。

Q:SeasLog日志模板都提供了哪些预置变量

A:SeasLog提供了下列预设变量,可以直接使用在日志模板中,将在日志最终生成时替换成对应值。

  • %L - Level 日志级别。
  • %M - Message 日志信息。
  • %T - DateTime 如2017-08-16 19:15:02,受seaslog.default_datetime_format影响。
  • %t - Timestamp 如1502882102.862,精确到毫秒数。
  • %Q - RequestId 区分单次请求,如没有调用SeasLog::setRequestId($string)方法,则在初始化请求时,采用内置的static char *get_uniqid()方法生成的惟一值。
  • %H - HostName 主机名。
  • %P - ProcessId 进程ID。
  • %D - Domain:Port 域名:口号,如www.cloudwise.com:8080; Cli模式下为cli
  • %R - Request URI 请求URI,如/app/user/signin; Cli模式下为入口文件,如CliIndex.php
  • %m - Request Method 请求类型,如GET; Cli模式下为执行命令,如/bin/bash
  • %I - Client IP 来源客户端IP; Cli模式下为local。取值优先级为:HTTP_X_REAL_IP > HTTP_X_FORWARDED_FOR > REMOTE_ADDR
  • %F - FileName:LineNo 文件名:行号,如UserService.php:118
  • %U - MemoryUsage 当前内容使用量,单位byte。调用zend_memory_usage
  • %u - PeakMemoryUsage 当前内容使用峰值量,单位byte。调用zend_memory_peak_usage
  • %C - Class::Action 类名::方法名,如UserService::getUserInfo。不在类中使用时,记录函数名。
  • %B - BasePath路径,如/var/log/www。受seaslog.default_basepathsetBasePath影响。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Design Patterns

Head First Design Patterns

Elisabeth Freeman、Eric Freeman、Bert Bates、Kathy Sierra、Elisabeth Robson / O'Reilly Media / 2004-11-1 / USD 49.99

You're not alone. At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire),......一起来看看 《Head First Design Patterns》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试