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.0 Pear安装方法
Dec 06 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
php中文验证码实现示例分享
Jan 12 PHP
php实现的Captcha验证码类实例
Sep 22 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
实例讲解php实现多线程
Jan 27 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
php实现文件上传基本验证
Mar 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+MYSQL 出现乱码的解决方法
2008/08/08 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
php7 新增功能实例总结
2020/05/25 PHP
用javascript实现给图片加链接
2007/08/15 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
json2.js的初步学习与了解
2011/10/06 Javascript
非主流的textarea自增长实现js代码
2011/12/20 Javascript
javascript的原生方法获取数组中的最大(最小)值
2012/12/19 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
JQuery中DOM实现事件移除的方法
2015/06/13 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
原生JS使用Canvas实现拖拽式绘图功能
2019/06/05 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
用python3读取python2的pickle数据方式
2019/12/25 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
个人简历的自荐信
2013/10/23 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
方法汇总:Python 安装第三方库常用
2022/04/26 Python
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技