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昨天隆重推出--PHP 5/Zend Engine 2.0新特性
Oct 09 PHP
用PHP调用数据库的存贮过程!
Oct 09 PHP
如何开发一个虚拟域名系统
Oct 09 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
ThinkPHP中的系统常量和预定义常量集合
Jul 01 PHP
php下pdo的mysql事务处理用法实例
Dec 27 PHP
PHP实现通用alert函数的方法
Mar 11 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
深入浅析php json 格式控制
Dec 24 PHP
PHP 文件上传限制问题
Sep 01 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
如何在PHP中生成随机数
Jun 04 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获取淘宝分类id示例
2014/01/16 PHP
htm调用JS代码
2007/03/15 Javascript
Js获取事件对象代码
2010/08/05 Javascript
php 中序列化和json使用介绍
2013/07/08 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
nodejs中方法和模块用法示例
2018/12/24 NodeJs
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
python新手经常遇到的17个错误分析
2014/07/30 Python
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python实现随机选择元素功能
2017/09/14 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
python安装numpy和pandas的方法步骤
2019/05/27 Python
python线程join方法原理解析
2020/02/11 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
python logging 重复写日志问题解决办法详解
2020/08/04 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
Linux文件系统类型
2012/02/15 面试题
营销总经理岗位职责
2014/02/02 职场文书
大型晚会策划方案
2014/02/06 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
2014年志愿者工作总结
2014/11/20 职场文书
培训感想范文
2015/08/07 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis