欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

composer - php-fig psr-3 日志接口 怎么理解?monolog有什么牛逼之处?

程序员文章站 2022-05-10 20:12:50
...
看这个 PSR 中文版,https://github.com/PizzaLiu/PHP-FIG

或英文原版:http://www.php-fig.org/

其中 PRS-0,PSR-1,PSR-2,PSR-4 都比较好理解,

但是不明白,PSR-3 是什么意思,是说如果写日志类,最好要继承那个接口 还是什么意思?
http://www.php-fig.org/psr/psr-3/


还有,看这里 https://packagist.org/explore/

其中“Popular Packages”第一的是 PSR 的日志类,

第二的是 monolog 这个日志类,怎么这么屌?
https://packagist.org/packages/monolog/monolog

如果用了 monolog 是不是不用管 PSR-3 了?

回复内容:

看这个 PSR 中文版,https://github.com/PizzaLiu/PHP-FIG

或英文原版:http://www.php-fig.org/

其中 PRS-0,PSR-1,PSR-2,PSR-4 都比较好理解,

但是不明白,PSR-3 是什么意思,是说如果写日志类,最好要继承那个接口 还是什么意思?
http://www.php-fig.org/psr/psr-3/


还有,看这里 https://packagist.org/explore/

其中“Popular Packages”第一的是 PSR 的日志类,

第二的是 monolog 这个日志类,怎么这么屌?
https://packagist.org/packages/monolog/monolog

如果用了 monolog 是不是不用管 PSR-3 了?

monolog是符合PSR-3标准的日志类的一种实现

PSR-3要求继承LoggerInterface主要是处于统一各种组件中日志记录模块接口的意图,理想是所有的第三方模块涉及“记录日志”的都通过接受一个LoggerInterface实例然后按接口来记日志,而无需每个模块各自搞一套“如果要记文件,配置XXX,记db配置YYY,日志文件定期删除配ZZZ”之类的东西

所以说题主的最后一句话可能倒过来说更好,要求以PSR-3规范记录日志的地方可以用monolog库的实例作为具体实现
用monolog而不通过LoggerInterface借口的话,达不到PSR-3的初衷


但这是以“写开源模块”“写第三方组件”为前提的(题主可以查查FIG的全称:)) 实际的业务项目中,确实不管PSR-3也不会怎样