日志无论是在开发过程成中还是部署在生产环境中,都经常使用。我们平时使用日志是简单的使用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