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 相关文章推荐
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
Oct 09 PHP
使用网络地址转换实现多服务器负载均衡
Oct 09 PHP
PHP define函数的使用说明
Aug 27 PHP
PHP中单引号与双引号的区别分析
Aug 19 PHP
php面象对象数据库操作类实例
Dec 02 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
CodeIgniter辅助之第三方类库third_party用法分析
Jan 20 PHP
PHP编写RESTful接口
Feb 23 PHP
php插入含有特殊符号数据的处理方法
Nov 24 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
Dec 08 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
Laravel中为什么不使用blpop取队列详析
Aug 01 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中设置多级目录session的问题
2011/08/08 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
看了就知道什么是JSON
2007/12/09 Javascript
javascript调试说明
2010/06/07 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
详解vue中v-bind:style效果的自定义指令
2020/01/21 Javascript
jquery实现简单自动轮播图效果
2020/07/29 jQuery
OpenLayers实现图层切换控件
2020/09/25 Javascript
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python随机生成带特殊字符的密码
2016/03/02 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
2020/04/27 Python
python退出循环的方法
2020/06/18 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
小学生运动会通讯稿
2014/09/23 职场文书
幼儿学前班评语
2014/12/29 职场文书
销售合作意向书范本
2015/05/08 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
Python 图片添加美颜效果
2022/04/28 Python