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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
Apr 02 PHP
php 上传功能实例代码
Apr 13 PHP
php字符串过滤与替换小结
Jan 26 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
WordPress分页伪静态加html后缀
Jun 08 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
yii2.0整合阿里云oss的示例代码
Sep 19 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
2018/04/08 PHP
JavaScript实现的石头剪刀布游戏源码分享
2014/08/22 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
SVG描边动画
2017/02/23 Javascript
使用vue-resource进行数据交互的实例
2017/09/02 Javascript
慕课网题目之js实现抽奖系统功能
2017/09/19 Javascript
Node.js实现发送邮件功能
2017/11/06 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
导游词之张家界
2019/10/31 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python