日志无论是在开发过程成中还是部署在生产环境中,都经常使用。我们平时使用日志是简单的使用file_put_contents将日志写入文件中,会显得很混乱,monolog可能是php中最好的日志系统。
下面是monolog的简单使用,后期强大的功能还有待发掘。
monolog概述
monolog是php下的组件,可以把日志发送到文件,邮箱,数据库,服务器上面。
安装:
环境:composer
在项目的根目录,编辑composer.json文件
{
"require": {
  "monolog/monolog": "1.23.0"
 },
 "repositories": {
  "packagist": {
   "type": "composer",
   "url": "https://packagist.phpcomposer.com"
  }
 }
}
在项目根目录使用命令  composer install 进入自动安装
使用:
require '/vendor/autoload.php'; 
//composer自动加载:
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
$log = new Logger('control');
//添加方法 StreamHandler 将记录保存在文件中
$log->pushHandler(new StreamHandler('path.log', Logger::NOTICE));
//增加一个日志,写入到硬盘中,等级为notice
$log->addInfo('状态查询成功',array("id"=> $device_id ,"message"=>"查询成功", "state"=>$state));
//写入日志  等级为info低于notice 则不写入
$log->addNotice('nocice',array("id"=> $device_id ,"message"=>"notice", "state"=>$state));
//写入日志  等级为notice 等于notice写入
$log->addError('状态查询失败',array("id"=> $device_id ,"message"=>"查询失败", "state"=>$state));
//写入错误日志 等级为error高于notice 则写入
日志信息:

[2018-07-27 18:03:54] name.NOTICE: nocice {"id":1,"message":"notice","state":1} []
[2018-07-27 18:03:54] name.ERROR: 状态查询失败 {"id":1,"message":"查询失败","state":1} []

日志有八个等级

1.DEBUG (100): 详细的调试信息

2.INFO (200): 感兴趣的事件。示例:用户登录,SQL日志

3.NOTICE (250):正常但重要的事件

4.WARNING (300): 特殊情况不是错误。示例:使用不推荐使用的API,使用不当的API,不一定错误的不良内容。

5.ERROR (400): 特殊情况不是错误。示例:使用不推荐使用的API,使用不当的API,不一定错误的不良内容。

6.CRITICAL (500): 应用程序组件不可用,意外异常。

7.ALERT (550): 必须立即采取行动。示例:整个网站关闭,数据库不可用等。这应该触发SMS警报并唤醒您。

8.EMERGENCY (600): 紧急情况:系统无法使用。

当信息的等级高于或等于handler的等级时,日志才会写入。
常用Handlers功能

StreamHandler  将记录写在文件中
MailHandler 错误信息被记录时发送邮件
ErrorLogHandler 记录写进php错误日志中
SocketHandler  通过socket写日志
RedisHandler 将日志写进Redis
MongoHandler 将日志写进mongodb

php日志库—monolog相关推荐

  1. php monolog uid,php程序日志库——monolog 包的使用

    由于一些历史原因,php中并没有内建的日志接口,故长期以来也没一个功能完备并且应用广泛的日志库.在我的工作生涯中,如果系统需要记录一些应用日志的话,基本上就是封装一个日志类,然后把一些要记录的字段写入 ...

  2. PHP日志库 - Monolog 知识整理

    一.基本信息 1.1 基本介绍 想必你已经从其它地方得知了 Monolog.没关系,我再说一次吧,手动狗头. Monolog 是 PHP 比较全又很容易扩展的记录日志库. Monolog 可以把日志发 ...

  3. monolog 日志库

    这可能是php世界中最好的日志库--monolog 由于一些历史原因,php中并没有内建的日志接口,故长期以来也没一个功能完备并且应用广泛的日志库.在我的工作生涯中,如果系统需要记录一些应用日志的话, ...

  4. 深度|从Go高性能日志库zap看如何实现高性能Go组件

    导语:zap是uber开源的Go高性能日志库.本文作者深入分析了zap的架构设计和具体实现,揭示了zap高效的原因.并且对如何构建高性能Go语言库给出自己的建议. 作者简介:李子昂,美图公司架构平台系 ...

  5. libslog---高性能开源C/C++多线程安全日志库

    Fromwiki: https://code.google.com/p/easynetwork/wiki/libslog libslog是一个基于linux的高性能开源C/C++多线程安全日志库.Ea ...

  6. 新写的c++日志库:log4K

    新写的c++日志库:log4K 网是开源的c/c++日志库也不少,但用起来总觉得不方便,于是动手写了一个C++日志框架Log4K. 测试代码: #include "log4k.h" ...

  7. android log耗性能吗,一个高性能的Android日志库

    clue 一个高性能的Android日志库. 为什么性能高 通常的Android日志库, 为了获取到class名, 方法名, 行号, 都是通过以下API实现的: StackTraceElement[] ...

  8. 日志库EasyLogging++学习系列(11)—— 共享日志库

    在前面的学习系列文章中,我们都是在单独的一个应用程序中使用 Easylogging++ 日志库.其实 Easylogging++ 日志库是可以共享给动态库.静态库以及应用程序共同使用的.在编写一些大型 ...

  9. 日志库EasyLogging++学习系列(10)—— 日志文件滚动

    在很多应用场合,我们是需要实现日志文件滚动的,特别是在一些长期运行的服务器程序中,如果把所有的日志都记录在一个文件之中,势必会造成日志文件越来越大.当日志内容很多的时候,万一哪天突然需要查询某个日志信 ...

最新文章

  1. 科普:String hashCode 方法为什么选择数字31作为乘子
  2. 暑假集训8.10-网络流套树剖套线段树
  3. Java 7 并发编程指南
  4. 动态内表 动态ALV显示
  5. 《A Berkeley View of systems challenges for AI》总结
  6. Java基础知识➣面向对象(八)
  7. CSDN挑战编程——《数学问题》
  8. Java Web(五) JSP详解(四大作用域九大内置对象等)
  9. lua对模块接口扩展的一种方法
  10. 随想录(gcc生成的中间语言、汇编代码)
  11. POJ3435 Sudoku Checker【谜题+数独】
  12. 下轮“双一流”将有高校下车?教育部最新说法来了!
  13. ThinkpadX220 windows10 博通bcm94352hmb的蓝牙连接音箱播放声音断断续续的解决方案
  14. javascript的几种继承方式
  15. win10 电脑开机底部任务栏无反应(鼠标一直转圈,部分图标不显示)
  16. android hidl简单实例1
  17. UOS/Deepin 常用文本代码编辑器推荐及安装
  18. TypeScript 源码详细解读(1)总览
  19. 1.大数据之EKL平台搭建以及使用
  20. 【已解决】ORB_SLAM2 编译 ./build_ros.h错误

热门文章

  1. php和java搞笑动态图_多玩搞笑GIF图片爬虫 PHP实现
  2. 计算机专业中,为什么网络工程最不起眼、最不受推荐?
  3. 如何在注册表被锁定的情况下修复注册表
  4. 【商标注册】怎么注册商标?2014商标注册费用大概多少?
  5. Linux “/“ 分区扩容
  6. 从阿里达摩院十大科技趋势预测,看认知智能发展 道翰天琼
  7. linux配置PATH路径
  8. 多线程并发和并行的区别
  9. 【单片机毕业设计】【mcuclub-jj-049】基于单片机的收纳箱的设计
  10. python shutil_Python之shutil模块的使用