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 相关文章推荐
第十节 抽象方法和抽象类 [10]
Oct 09 PHP
PHP 和 MySQL 基础教程(三)
Oct 09 PHP
ASP和PHP都是可以删除自身的
Apr 09 PHP
PHP中函数内引用全局变量的方法
Oct 20 PHP
基于header的一些常用指令详解
Jun 06 PHP
php用户注册信息验证正则表达式
Nov 12 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
PHP加密技术的简单实现
Sep 04 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
laravel 数据验证规则详解
Oct 23 PHP
关于laravel框架中的常用目录路径函数
Oct 23 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 SOCKET编程详解
2015/05/22 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
浅析AMD CMD CommonJS规范--javascript模块化加载学习心得总结
2016/03/16 Javascript
浅谈Angular的$q, defer, promise
2016/12/20 Javascript
Move.js入门
2017/02/08 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
解读Django框架中的低层次缓存API
2015/07/24 Python
浅谈Python单向链表的实现
2015/12/24 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
Ariat官网:美国马靴和服装品牌
2019/12/16 全球购物
精彩的推荐信范文
2013/11/26 职场文书
给客户的道歉信
2014/01/13 职场文书
小学生读书感言
2014/02/12 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
销售督导岗位职责
2015/04/10 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
Python find()、rfind()方法及作用
2022/12/24 Python