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 相关文章推荐
用IE远程创建Mysql数据库的简易程序
Oct 09 PHP
PHP 文件上传源码分析(RFC1867)
Oct 30 PHP
php数据库备份还原类分享
Mar 20 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
PHP实现动态执行代码的方法
Mar 25 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
Yii实现显示静态页的方法
Apr 25 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
php字符集转换
Jan 23 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
Sep 15 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之Smarty入门
2007/01/04 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
Yii框架分页技术实例分析
2019/08/30 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
JavaScript学习笔记整理之引用类型
2016/01/22 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
jQuery数组处理函数整理
2016/08/03 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
浅谈Vue页面级缓存解决方案feb-alive(上)
2019/04/14 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
node.js中 mysql 增删改查操作及async,await处理实例分析
2020/02/11 Javascript
javascript实现京东快递单号的查询效果
2020/11/30 Javascript
浅谈python字典多键值及重复键值的使用
2016/11/04 Python
使用python存储网页上的图片实例
2018/05/22 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
分布式数据库需要考虑哪些问题
2013/12/08 面试题
毕业生的自我评价分享
2013/12/18 职场文书
老师的检讨书
2014/02/23 职场文书
应届毕业生自荐书
2014/06/18 职场文书
党性教育心得体会
2014/09/03 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
经费申请报告
2015/05/15 职场文书
预备党员半年考察意见
2015/06/01 职场文书