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 相关文章推荐
mysql时区问题
Mar 26 PHP
ezSQL PHP数据库操作类库
May 16 PHP
PHP中去除换行解决办法小结(PHP_EOL)
Nov 27 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
Jun 20 PHP
PHP查询网站的PR值
Oct 30 PHP
php查看请求头信息获取远程图片大小的方法分享
Dec 25 PHP
php表单请求获得数据求和示例
May 15 PHP
简单了解WordPress开发中update_option()函数的用法
Jan 11 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
PHP利用curl发送HTTP请求的实例代码
Jul 09 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
PHP转换文本框内容为HTML格式的方法
2016/07/20 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
Nodejs中解决cluster模块的多进程如何共享数据问题
2016/11/10 NodeJs
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
JavaScript find()方法及返回数据实例
2020/04/30 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
浅谈python对象数据的读写权限
2016/09/12 Python
python分析作业提交情况
2017/11/22 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python绘制热力图示例
2019/09/27 Python
利用matplotlib实现根据实时数据动态更新图形
2019/12/13 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
AmazeUI图片轮播效果的示例代码
2020/08/20 HTML / CSS
马来西亚排名第一的宠物用品店:Pets Wonderland
2020/04/16 全球购物
关于Java String的一道面试题
2013/09/29 面试题
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
关于读书的演讲稿800字
2014/08/27 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers