Laravel 集成的 Monolog 库对日志进行配置和记录实例
发布:smiling 来源: PHP粉丝网 添加日期:2018-09-14 13:37:28 浏览: 评论:0
对于大型系统而言,日志是不可或缺的模块,Laravel自然也对日志提供了完善的支持。目前Laravel集成了强大的Monolog库进行日志记录。下面我们就来大致看一下Laravel中如何对日志进行配置以及日志的简单使用。
1、日志处理器配置
首先我们来看日志处理器的配置。Laravel目前支持四种日志处理器:
single —— 将日志记录到单个文件中。该日志处理器对应Monolog的StreamHandler。
daily —— 以日期为单位将日志进行归档,每天创建一个新的日志文件记录日志。该日志处理器 对应Monolog的RotatingFileHandler。
syslog —— 将日志记录到syslog中。该日志处理器 对应Monolog的SyslogHandler。
errorlog —— 将日志记录到PHP的error_log中。该日志处理器 对应Monolog的ErrorLogHandler。
项目实际日志处理器通过config/app.php中的log配置项决定,默认配置值为single。这里我们使用默认值,不做修改:
'log' => 'single',
当然如果这四种方式满足不了你的需求,还可以使用configureMonologUsing方法完全控制Monolog的日志处理器:
- $app->configureMonologUsing(function($monolog) {
- $monolog->pushHandler(...);
- });
注:必须将上述这段代码置于bootstrap/app.php文件返回$app之前处才能生效。
2、使用Log记录日志
配置完成后,就可以在代码中使用Log门面来记录日志,Log门面背后实际上是Illuminate\Log\Writer,而在Writer的构造函数中注入了Monolog\Logger。生成的日志文件存放在storage/logs目录下。
目前,Log门面支持八种日志级别(使用RFC 5424标准):
- Log::emergency($error); //紧急状况,比如系统挂掉
- Log::alert($error); //需要立即采取行动的问题,比如整站宕掉,数据库异常等,这种状况应该通过短信提醒
- Log::critical($error); //严重问题,比如:应用组件无效,意料之外的异常
- Log::error($error); //运行时错误,不需要立即处理但需要被记录和监控
- Log::warning($error); //警告但不是错误,比如使用了被废弃的API
- Log::notice($error); //普通但值得注意的事件
- Log::info($error); //感兴趣的事件,比如登录、退出
- Log::debug($error); //详细的调试信息
下面我们就来分别演示下这几种日志级别的日志记录,我们将在TestController的log方法中进行测试:
- public function log(){
- Log::emergency("系统挂掉了");
- Log::alert("数据库访问异常");
- Log::critical("系统出现未知错误");
- Log::error("指定变量不存在");
- Log::warning("该方法已经被废弃");
- Log::notice("用户在异地登录");
- Log::info("用户xxx登录成功");
- Log::debug("调试信息");
- }
在浏览器中访问http://laravel.app:8000/test/log,对应在storage/logs/laravel.log记录的日志信息如下:
[2015-11-09 14:24:05] local.EMERGENCY: 系统挂掉了
[2015-11-09 14:24:05] local.ALERT: 数据库访问异常
[2015-11-09 14:24:05] local.CRITICAL: 系统出现未知错误
[2015-11-09 14:24:05] local.ERROR: 指定变量不存在
[2015-11-09 14:24:05] local.WARNING: 该方法已经被废弃
[2015-11-09 14:24:05] local.NOTICE: 用户在异地登录
[2015-11-09 14:24:05] local.INFO: 用户xxx登录成功
[2015-11-09 14:24:05] local.DEBUG: 调试信息
可见对应的日志记录包含了日志记录时间、日志级别和日志消息等信息。当然我们也可以在记录日志时传递上下文信息:
Log::info("用户xxx登录成功",['user_id'=>1]);
对应的日志记录为:
[2015-11-09 14:25:47] local.INFO: 用户xxx登录成功 {"user_id":1}
如果要访问底层Monolog的实例可以使用如下方法:
$monolog = Log::getMonolog();
dd($monolog);
我们可以在浏览器页面中查看当前Monolog对象实例的属性信息:
Laravel Monolog 对象实例
我们可以从中看出当前使用的日志处理器,日志记录的位置,日志记录的格式等信息。
Tags: Laravel Monolog
相关文章
- ·Laravel4创建一个占位图片服务例子(2014-06-18)
- ·深入解析Laravel5.5中的包自动发现Package Auto Discovery(2018-09-13)
- ·Laravel学习教程之request validation的编写(2018-09-13)
- ·Laravel框架实现利用中间件进行操作日志记录功能(2018-09-14)
- ·Laravel Elixir运行glup命令:Error in plugin ‘gulp-notify’(2018-09-15)
- ·Laravel 5 中防止 XSS 跨站攻击的例子(2018-10-17)
- ·Laravel中为什么不使用blpop取队列详析(2018-10-19)
- ·php7跑laravel5.0报错,异常Carbon::createFromFormat()(2018-10-23)
- ·Laravel Memcached缓存驱动的配置应用实例(2018-10-30)
- ·Laravel memcached缓存对文章增删改查进行优化例子(2018-10-30)
- ·Laravel 中通过 Artisan View 扩展包创建及删除应用视图文件(2018-10-30)
- ·laravel项目利用twemproxy部署redis集群的完整步骤(2018-11-07)
- ·Laravel框架实现利用监听器进行sql语句记录功能(2018-11-07)
- ·Laravel框架模板继承操作示例(2018-11-14)
- ·Laravel框架实现定时发布任务的方法(2018-11-15)
- ·Laravel中错误与异常处理的用法示例(2018-11-18)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)