Laravel日志用法详解


Posted in PHP onOctober 09, 2016

本文实例讲述了Laravel日志用法。分享给大家供大家参考,具体如下:

这里使用的Laravel版本仍是5.2

日志是非常重要的。本地开发可以开启调试模式,但是上线的项目查看日志是非常简洁有效的调试手段。Laravel集成了Monolog日志库以便提供多种功能强大的日志处理器。

Laravel支持日志方法single, daily, syslog 和 errorlog。例如,如果你想要日志文件按日生成而不是生成单个文件,应该在配置文件config/app.php中设置log值如下:

'log' => 'daily'

系统默认配置为single

#config/app.php:111
'log' => env('APP_LOG', 'single'),

下面我们看下Laravel是如何配置日志的。

#vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:36
protected $bootstrappers = [
    'Illuminate\Foundation\Bootstrap\DetectEnvironment',
    'Illuminate\Foundation\Bootstrap\LoadConfiguration',
    'Illuminate\Foundation\Bootstrap\ConfigureLogging',
    'Illuminate\Foundation\Bootstrap\HandleExceptions',
    'Illuminate\Foundation\Bootstrap\RegisterFacades',
    'Illuminate\Foundation\Bootstrap\RegisterProviders',
    'Illuminate\Foundation\Bootstrap\BootProviders',
];
<?php
namespace Illuminate\Foundation\Bootstrap;
use Illuminate\Log\Writer;
use Monolog\Logger as Monolog;
use Illuminate\Contracts\Foundation\Application;
class ConfigureLogging
{
/**
 * Bootstrap the given application.
 *
 * @param \Illuminate\Contracts\Foundation\Application $app
 * @return void
 */
public function bootstrap(Application $app)
{
  $log = $this->registerLogger($app);
  // If a custom Monolog configurator has been registered for the application
  // we will call that, passing Monolog along. Otherwise, we will grab the
  // the configurations for the log system and use it for configuration.
  if ($app->hasMonologConfigurator()) {
    call_user_func(
      $app->getMonologConfigurator(), $log->getMonolog()
    );
  } else {
    $this->configureHandlers($app, $log);
  }
}

如果自定义Monolog配置,走if条件,默认走else

protected function configureHandlers(Application $app, Writer $log)
{
    $method = 'configure'.ucfirst($app['config']['app.log']).'Handler';
    $this->{$method}($app, $log);
}
/**
* Configure the Monolog handlers for the application.
*
* @param \Illuminate\Contracts\Foundation\Application $app
* @param \Illuminate\Log\Writer $log
* @return void
*/
protected function configureSingleHandler(Application $app, Writer $log)
{
     $log->useFiles(
       $app->storagePath().'/logs/laravel.log', #存储文件
       $app->make('config')->get('app.log_level', 'debug') #存储级别
     );
}

这里useFiles方法是注册signle文件日志处理程序,并设置存储文件以及存储的级别。

下面是初始化日志时的4种日志处理注册方式。

public function useFiles($path, $level = 'debug') #单一文件
public function useDailyFiles($path, $days = 0, $level = 'debug') #每日生成
public function useSyslog($name = 'laravel', $level = 'debug') #系统日志的方式
public function useErrorLog($level = 'debug', $messageType = ErrorLogHandler::OPERATING_SYSTEM) #等同于php的error_log方式

日志初始化信息基本上就是上面这些。

你可以使用Log门面编写日志信息到日志中:

八种日志级别:emergency, alert, critical, error,warning, notice, info 和 debug。

Log::emergency($error);
Log::alert($error);
Log::critical($error);
Log::error($error);
Log::warning($error);
Log::notice($error);
Log::info($error);
Log::debug($error);

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
PHP 万年历实现代码
Oct 18 PHP
php获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
php对数组内元素进行随机调换的方法
May 12 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
利用php生成验证码
Feb 23 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
Laravel学习教程之本地化模块
Aug 18 PHP
详解PHP中的外观模式facade pattern
Feb 05 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 28 PHP
Laravel手动分页实现方法详解
Oct 09 #PHP
Laravel5.1自定义500错误页面示例
Oct 09 #PHP
Laravel重写用户登录简单示例
Oct 08 #PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
Oct 08 #PHP
PHP  实现等比压缩图片尺寸和大小实例代码
Oct 08 #PHP
Laravel Memcached缓存驱动的配置与应用方法分析
Oct 08 #PHP
yii通过小物件生成view的方法
Oct 08 #PHP
You might like
php minixml详解
2008/07/19 PHP
php SQL Injection with MySQL
2011/02/27 PHP
PHP递归返回值时出现的问题解决办法
2013/02/19 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
用JavaScript对JSON进行模式匹配 (Part 2 - 实现)
2010/07/17 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
2020/08/21 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
2017/02/17 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
vue中实现上传文件给后台实例详解
2019/08/22 Javascript
python的类方法和静态方法
2014/12/13 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
2017/05/23 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
店长岗位职责
2013/11/21 职场文书
表决心的诗句大全
2014/03/11 职场文书
中学生操行评语大全
2014/04/24 职场文书
2016高考感言
2015/08/01 职场文书
2016教师国培研修感言
2015/12/08 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python