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 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
php代码中使用换行及(\n或\r\n和br)的应用
Feb 02 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
php获取json数据所有的节点路径
May 17 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php实现购物车功能(以大苹果购物网为例)
Mar 09 PHP
PHP中快速生成随机密码的几种方式
Apr 17 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 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
2020最新CPU的性能排名
2020/04/02 数码科技
火车头采集器3.0采集图文教程
2007/03/17 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
2017/02/04 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
详谈DOM简介及节点、属性、查找节点的方法
2017/11/16 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
2018/11/30 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
解决Can't find variable: SockJS vue项目的问题
2020/09/22 Javascript
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
将tensorflow的ckpt模型存储为npy的实例
2018/07/09 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
农村婚礼证婚词
2014/01/10 职场文书
实习单位接收函模板
2014/01/10 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
物业消防安全责任书
2014/07/23 职场文书
求职意向书
2014/07/29 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
教师节座谈会主持词
2015/07/03 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS