做一个企业级的开发,我们可能需要很多模块,比如日志模块,测试模块,统计模块等等,今天我们就来介绍一个重量级企业日志组件monolog。
这是一个遵循psr规范的日志系统,可以自动加载。引入这个系统也很简单,通过composer就可以使用,如果不知道composer,建议你开始先了解一下,现在主流的框架基本都通过composer管理依赖关系。
php composer.phar require monolog/monolog 这个命令就可以自动下载monolog日志。
然后在入口文件引入autoload.php就可以实现monolog的自动加载。
简单的使用方法:
require_once(DIR.'/vendor/autoload.php'); use MonologLogger; use MonologHandlerStreamHandler; $logger = new Logger('channel-name'); $logger->pushHandler(new StreamHandler(DIR.'/app.log', Logger::DEBUG)); $logger->info('This is a log! ^_^ '); $logger->warning('This is a log warning! ^_^ '); $logger->error('This is a log error! ^_^ '); $logger->addInfo('this is array info',['username'=>'梦回故里','age'=>'18']); $logger->addCritical('this is a critical info',['error'=>'the server is down']);
记录的日志如下图
可以看到日志记录了时间,日志级别,日志基本信息,日志额外数组信息。
monolog的强大在于它的组件和容器非常强大,它可以很容易集合mailer,做到系统发生重大错误的时候发送邮件。
use QL\QueryList; use Medoo\Medoo; use Monolog\Logger; use Monolog\Handler\StreamHandler; use Monolog\Handler\SwiftMailerHandler; // Create the Transport $transporter = new Swift_SmtpTransport('smtp.163.com', 994, 'ssl'); $transporter->setUsername('xxx@xxx.com'); $transporter->setPassword('xxxx'); // Create the Mailer using your created Transport $mailer = new Swift_Mailer($transporter); // Create a message $message = (new Swift_Message('A CRITICAL log was added')); $message->setFrom(['xxx@xxxx' => '梦回故里']); $message->setTo(['xxx@xxx' => '梦回故里']); $logger = new Logger('logger'); $logger->pushHandler(new StreamHandler(__DIR__.'/access.log', Logger::INFO)); $logger->pushHandler(new SwiftMailerHandler($mailer, $message, Logger::CRITICAL, false));
这样我们定义了一个消息处理器,就是当发送CRITICAL级别的消息的时候,进行发送邮件处理。我们简单介绍下邮件注意事项。
-
端口号要写正确,是465还是994等
-
用户名正确,密码正确,这里的密码一般是授权码,不是邮箱的登录密码,你可以邮箱设置里面去查看。
-
发送邮件的setFrom一定要与设置的邮箱一致,否则可能导致邮件无法发送。
-
邮件的内容不能包含一些特殊的html内容,否则可能被退回。
总之,monolog这个企业级的日志框架还是很好用的,基本可以比肩java的log4j了。
Comments are closed.