php日志库—monolog
日志无论是在开发过程成中还是部署在生产环境中,都经常使用。我们平时使用日志是简单的使用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相关推荐
- php monolog uid,php程序日志库——monolog 包的使用
由于一些历史原因,php中并没有内建的日志接口,故长期以来也没一个功能完备并且应用广泛的日志库.在我的工作生涯中,如果系统需要记录一些应用日志的话,基本上就是封装一个日志类,然后把一些要记录的字段写入 ...
- PHP日志库 - Monolog 知识整理
一.基本信息 1.1 基本介绍 想必你已经从其它地方得知了 Monolog.没关系,我再说一次吧,手动狗头. Monolog 是 PHP 比较全又很容易扩展的记录日志库. Monolog 可以把日志发 ...
- monolog 日志库
这可能是php世界中最好的日志库--monolog 由于一些历史原因,php中并没有内建的日志接口,故长期以来也没一个功能完备并且应用广泛的日志库.在我的工作生涯中,如果系统需要记录一些应用日志的话, ...
- 深度|从Go高性能日志库zap看如何实现高性能Go组件
导语:zap是uber开源的Go高性能日志库.本文作者深入分析了zap的架构设计和具体实现,揭示了zap高效的原因.并且对如何构建高性能Go语言库给出自己的建议. 作者简介:李子昂,美图公司架构平台系 ...
- libslog---高性能开源C/C++多线程安全日志库
Fromwiki: https://code.google.com/p/easynetwork/wiki/libslog libslog是一个基于linux的高性能开源C/C++多线程安全日志库.Ea ...
- 新写的c++日志库:log4K
新写的c++日志库:log4K 网是开源的c/c++日志库也不少,但用起来总觉得不方便,于是动手写了一个C++日志框架Log4K. 测试代码: #include "log4k.h" ...
- android log耗性能吗,一个高性能的Android日志库
clue 一个高性能的Android日志库. 为什么性能高 通常的Android日志库, 为了获取到class名, 方法名, 行号, 都是通过以下API实现的: StackTraceElement[] ...
- 日志库EasyLogging++学习系列(11)—— 共享日志库
在前面的学习系列文章中,我们都是在单独的一个应用程序中使用 Easylogging++ 日志库.其实 Easylogging++ 日志库是可以共享给动态库.静态库以及应用程序共同使用的.在编写一些大型 ...
- 日志库EasyLogging++学习系列(10)—— 日志文件滚动
在很多应用场合,我们是需要实现日志文件滚动的,特别是在一些长期运行的服务器程序中,如果把所有的日志都记录在一个文件之中,势必会造成日志文件越来越大.当日志内容很多的时候,万一哪天突然需要查询某个日志信 ...
最新文章
- 科普:String hashCode 方法为什么选择数字31作为乘子
- 暑假集训8.10-网络流套树剖套线段树
- Java 7 并发编程指南
- 动态内表 动态ALV显示
- 《A Berkeley View of systems challenges for AI》总结
- Java基础知识➣面向对象(八)
- CSDN挑战编程——《数学问题》
- Java Web(五) JSP详解(四大作用域九大内置对象等)
- lua对模块接口扩展的一种方法
- 随想录(gcc生成的中间语言、汇编代码)
- POJ3435 Sudoku Checker【谜题+数独】
- 下轮“双一流”将有高校下车?教育部最新说法来了!
- ThinkpadX220 windows10 博通bcm94352hmb的蓝牙连接音箱播放声音断断续续的解决方案
- javascript的几种继承方式
- win10 电脑开机底部任务栏无反应(鼠标一直转圈,部分图标不显示)
- android hidl简单实例1
- UOS/Deepin 常用文本代码编辑器推荐及安装
- TypeScript 源码详细解读(1)总览
- 1.大数据之EKL平台搭建以及使用
- 【已解决】ORB_SLAM2 编译 ./build_ros.h错误
热门文章
- php和java搞笑动态图_多玩搞笑GIF图片爬虫 PHP实现
- 计算机专业中,为什么网络工程最不起眼、最不受推荐?
- 如何在注册表被锁定的情况下修复注册表
- 【商标注册】怎么注册商标?2014商标注册费用大概多少?
- Linux “/“ 分区扩容
- 从阿里达摩院十大科技趋势预测,看认知智能发展 道翰天琼
- linux配置PATH路径
- 多线程并发和并行的区别
- 【单片机毕业设计】【mcuclub-jj-049】基于单片机的收纳箱的设计
- python shutil_Python之shutil模块的使用