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 中文处理函数集合
Aug 27 PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 PHP
php 正确解码javascript中通过escape编码后的字符
Jan 28 PHP
PHP入门经历和学习过程分享
Apr 11 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
PHP闭包实例解析
Sep 08 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
Yii实现显示静态页的方法
Apr 25 PHP
深入讲解PHP的对象注入(Object Injection)
Mar 01 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
PHP中soap的用法实例
2014/10/24 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
jquery mobile动态添加元素之后不能正确渲染解决方法说明
2014/03/05 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
vue 自定指令生成uuid滚动监听达到tab表格吸顶效果的代码
2020/09/16 Javascript
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python的迭代器与生成器实例详解
2014/07/16 Python
Sublime开发python程序的示例代码
2018/01/24 Python
PyQt5每天必学之组合框
2018/04/20 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
都柏林通行卡/城市通票:The Dublin Pass
2020/02/16 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
技术人员面试提纲
2013/11/28 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
商场主管竞聘书
2014/03/31 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
侵犯商业秘密的律师函
2015/05/27 职场文书
复兴之路展览观后感
2015/06/02 职场文书