旗下导航:搜·么
当前位置:网站首页 > PHP框架 > Laravel > 正文

Laravel5.5中怎样自定义日记行动的剖析【laravel框架】

作者:搜搜PHP网发布时间:2019-11-27分类:Laravel浏览:89


导读:这篇文章给人人分享的内容是关于Laravel5.5中怎样自定义日记行动的剖析,内容很细致,有肯定的参考价值,愿望能够协助到有须要的朋侪。在Laravel5.6版本...
这篇文章给人人分享的内容是关于Laravel5.5中怎样自定义日记行动的剖析,内容很细致,有肯定的参考价值,愿望能够协助到有须要的朋侪。

在 Laravel 5.6 版本中日记行动能够很随意马虎的举行自定义,而在5.5以下版本中日记行动自定义自由度并非很高,然则项目有需求不能由于这个就强即将项目升级为5.6吧,何况作为一个稳固的项目升级框架大版本有能够会有许多坑,基于这些缘由我尝试了对 Laravel 5.5 的日记举行革新以顺应我的需求。

Laravel 的日记行动大部分是在 Illuminate\Log\LogServiceProvider 中,我们能够看一下个中的代码片断:

/**
 * Configure the Monolog handlers for the application.
 *
 * @param \Illuminate\Log\Writer $log
 * @return void
 */
protected function configureDailyHandler(Writer $log)
{
 $log->useDailyFiles(
  $this->app->storagePath().'/logs/laravel.log', $this->maxFiles(),
  $this->logLevel()
 );
}

这是我最常在项目中运用的日记存储体式格局,能够看到日记的存储途径几近与写死的状况,没法经由过程外部参数随意马虎的变动。

最最先我想的是重写这个 Provider 然后将其注册到 app.php 的 providers 数组中,然则这类行动并不可行,由于经由过程检察源码, LogServiceProvider 是在框架启动时就注册。

有如许一个要领掌握了这个注册行动:

protected function registerBaseServiceProviders()
{
 $this->register(new EventServiceProvider($this));

 $this->register(new LogServiceProvider($this));

 $this->register(new RoutingServiceProvider($this));
}

既然我们知道了它们是怎样见效的,那末我们将这两个类继续并修正个中我们须要转变的行动举行革新,我的革新体式格局以下。在 app\Providers 中新建 LogServiceProvider 类继续 Illuminate\Log\LogServiceProvider ,代码以下:

<?php


namespace App\Providers;

use Illuminate\Log\LogServiceProvider as BaseLogServiceProvider;
use Illuminate\Log\Writer;

class LogServiceProvider extends BaseLogServiceProvider
{
 /**
  * Configure the Monolog handlers for the application.
  *
  * @param \Illuminate\Log\Writer $log
  * @return void
  */
 protected function configureDailyHandler(Writer $log)
 {
  $path = config('app.log_path');
  $log->useDailyFiles(
   $path, $this->maxFiles(),
   $this->logLevel()
  );
 }
}

在 config/app.php 目次中增加设置:

'log_path' => env('APP_LOG_PATH', storage_path('/logs/laravel.log')),

app 目次中新建 Foundation 目次,新建 Application 类继续 Illuminate\Foundation\Application 类,重写 registerBaseServiceProviders 要领。

<?php
/**
 * Created by PhpStorm.
 * User: dongyuxiang
 * Date: 2018/7/31
 * Time: 16:53
 */

namespace App\Foundation;

use App\Providers\LogServiceProvider;
use Illuminate\Events\EventServiceProvider;
use Illuminate\Routing\RoutingServiceProvider;
use Illuminate\Foundation\Application as BaseApplication;


class Application extends BaseApplication
{

 /**
  * Register all of the base service providers.
  *
  * @return void
  */
 protected function registerBaseServiceProviders()
 {
  $this->register(new EventServiceProvider($this));

  $this->register(new LogServiceProvider($this));

  $this->register(new RoutingServiceProvider($this));
 }
}

说是重写实在只是将use类换从了我们本身建立的 LogServiceProvider 。

然后在 bootstrap\app.php 中将变量 $app 的 new 对象换成我们继续重写后的。

$app = new App\Foundation\Application(
 realpath(__DIR__.'/../')
);

如许我就胜利的将日记途径能够随意定义了,而且来讲有了此次履历我关于框架不相符我需求的处所能够做更进一步的优化以相符我的请求,而且我没有变动框架底层的代码,当框架有bug修复的时刻我也能够宁神的举行框架更新。

相干文章引荐:

php 自定义毛病日记实例详解

Yii2 自定义日记文件写日记

以上就是Laravel5.5中怎样自定义日记行动的剖析的细致内容,更多请关注ki4网别的相干文章!

标签:laravel自定义日志日志laravel5.1日志扩展