欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

自定義Laravel (monolog)日志位置,并增加請求ID的實(shí)現(xiàn)

 更新時(shí)間:2019年10月17日 11:36:54   作者:Webben  
今天小編就為大家分享一篇自定義Laravel (monolog)日志位置,并增加請求ID的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

修改 bootstrap/app.php 文件

$app->configureMonologUsing(function($monolog) use ($app) {
 $monolog->pushHandler(
  (new Monolog\Handler\RotatingFileHandler(
   '/var/logs/app/laravel',
   $app->make('config')->get('app.log_max_files', 5)
  ))->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true, true))
 );
});

添加以后寫入日志文件為:

-rw-r--r-- 1 web web 93 Dec 18 15:52 laravel-2017-12-17
-rw-r--r-- 1 web web 279 Dec 18 16:10 laravel-2017-12-18

參考:Laravel 的錯(cuò)誤和日志記錄

或者

創(chuàng)建app\Providers\LogServiceProvider.php 文件

修改 config\app.php providers 增加

App\Providers\LogServiceProvider::class

然后 App\Providers\LogServiceProvider.php 內(nèi)容如下

<?php

namespace App\Providers;

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

class LogServiceProvider extends SysServiceProvider
{
 protected function configureSingleHandler(Writer $log)
 {
  $log->useFiles(
   '/var/logs/app/laravel.log',
   $this->logLevel()
  );
 }

 protected function configureDailyHandler(Writer $log)
 {
  $log->useDailyFiles(
   '/var/logs/app/laravel.log', $this->maxFiles(),
   $this->logLevel()
  );
 }
}

增加請求ID request id

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Carbon\Carbon;

class LogServiceProvider extends ServiceProvider
{
 protected $log_file;

 /**
  * Bootstrap any application services.
  * @return void
  */
 public function boot()
 {
  //
 }

 /**
  * Register any application services.
  * @return void
  */
 public function register()
 {
  $this->load_request_id();

  $this->log_configure();
 }

 /**
  * 生成 request_id
  * @return void
  */
 protected function load_request_id()
 {
  define( 'REQUEST_ID' , config('app.log_prefix').Carbon::now()->timestamp );
 }
 
 /**
  * 注冊 monolog pushHandler
  * @return void
  */
 protected function log_configure()
 {
  $log_file = $this->getLogFile();
  $log_max_files = $this->getLogMaxFiles();

  /**
   * @doc https://d.laravel-china.org/docs/5.4/errors#自定義-Monolog-設(shè)置
   */
  $this->app->configureMonologUsing(function($monolog) use ($log_file , $log_max_files) {
   $monolog->pushHandler(
    (new \Monolog\Handler\RotatingFileHandler(
     $log_file ,
     $log_max_files
    ))->setFormatter(new \Monolog\Formatter\LineFormatter( "[%datetime%] [".REQUEST_ID."] %channel%.%level_name%: %message% %context% %extra%\n", null, true, true))
   );
  });
 }

 protected function getLogMaxFiles()
 {
  return config('app.log_max_files' , 5);
 }

 /**
  * @return mixed
  */
 protected function getLogFile()
 {
  if( is_null( $this->log_file) )
  {
   $this->log_file = rtrim(config('app.log_path') , DIRECTORY_SEPARATOR )."/laravel.log";
  }
  return $this->log_file;
 }
}

優(yōu)化以后

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;
use Carbon\Carbon;
use Monolog\Logger;;
use ReflectionClass;

class LogServiceProvider extends ServiceProvider
{
 protected $log_file;

 /**
  * Bootstrap any application services.
  *
  * @return void
  */
 public function boot()
 {
  //
 }

 /**
  * Register any application services.
  *
  * @return void
  */
 public function register()
 {
  $this->loadRequestId();

  /**
   * 根據(jù)日期來分割日志
   */
  $this->useDailyFiles();

 }

 protected function loadRequestId()
 {
  define( 'REQUEST_ID' , config('app.log_prefix').Carbon::now()->timestamp );
 }

 /**
  * 根據(jù)日期來分割日志
  */
 protected function useDailyFiles()
 {
  $handler = $this->getDailyHandler()->setFormatter( $this->getDefaultFormatter() );

  $errorHandler = $this->getDailyHandler(Logger::ERROR)->setFormatter( $this->getDefaultFormatter() );

  $this->app->configureMonologUsing( function( $monolog) use ( $handler , $errorHandler )
  {
   $monolog->pushHandler( $handler );

   $monolog->pushHandler( $errorHandler );
  });
 }

 /**
  * 設(shè)置 日志 行格式
  * @return LineFormatter
  */
 protected function getDefaultFormatter()
 {
  $format = "[%datetime%] [".REQUEST_ID."] %channel%.%level_name%: %message% %context% %extra%\n";
  return new LineFormatter( $format , null, true, true);
 }


 /**
  * 根據(jù)日志區(qū)分
  * @return \Monolog\Handler\RotatingFileHandler
  */
 protected function getDailyHandler( $level = Logger::DEBUG)
 {
  return new RotatingFileHandler(
   $this->logPath().$this->logName( $level ) ,
   $this->maxFiles() ,
   $level
  );
 }

 /**
  * 日志文件最多個(gè)數(shù)
  * @return int
  */
 protected function maxFiles()
 {
  if ($this->app->bound('config')) {
   return $this->app->make('config')->get('app.log_max_files', 30);
  }

  return 0;
 }

 /**
  * 日志文件名稱
  * @return mixed
  */
 protected function logPath()
 {
  $logPath = $this->app->storagePath()."/logs/";
  if( $this->app->bound('config'))
  {
   $logPath = $this->app->make('config')->get('app.log_path', $logPath );
  }
  return $logPath;
 }

 /**
  * log 完整文件名
  * @param int $level
  * @return string
  */
 protected function logName( $level = Logger::DEBUG )
 {
  return $this->getAppName().'-'.$this->getLevelName( $level ).".log";
 }

 /**
  * 獲取項(xiàng)目app
  * @return mixed
  */
 protected function getAppName()
 {
  return $this->app->make('config')->get('app.name');
 }

 /**
  * 獲取log錯(cuò)誤級別名稱
  * @param $level
  * @return mixed
  */
 protected function getLevelName( $level )
 {
  $r = new ReflectionClass( Logger::class );
  $constants = array_flip( $r->getConstants() );
  return $constants[$level];
 }
}

以上這篇自定義Laravel (monolog)日志位置,并增加請求ID的實(shí)現(xiàn)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 超小PHP小馬小結(jié)(方便查找后門的朋友)

    超小PHP小馬小結(jié)(方便查找后門的朋友)

    超小PHP小馬小結(jié),方便查找后門的朋友,發(fā)現(xiàn)相關(guān)類似代碼可以直接封殺了
    2012-05-05
  • iOS10推送通知開發(fā)教程

    iOS10推送通知開發(fā)教程

    這篇文章主要為大家詳細(xì)介紹了iOS 10推送通知開發(fā)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 清除laravel緩存命令代碼實(shí)例

    清除laravel緩存命令代碼實(shí)例

    這篇文章主要介紹了清除laravel緩存命令代碼實(shí)例,這個(gè)是在應(yīng)用終端中直接命令清除,有感興趣的同學(xué)可以學(xué)習(xí)下
    2021-03-03
  • php Session無效分析資料整理

    php Session無效分析資料整理

    Session在開發(fā)中是非常重要的一個(gè)數(shù)據(jù)存儲(chǔ)變量了,它可以實(shí)現(xiàn)不同頁面之間的傳值了,下面我們來為各位介紹在使用Session時(shí)碰到過期無效的一些問題吧,需要的朋友可以參考下
    2016-11-11
  • PHP+jQuery 注冊模塊的改進(jìn)(二):郵箱激活

    PHP+jQuery 注冊模塊的改進(jìn)(二):郵箱激活

    本文是PHP+jQuery 注冊模塊的改價(jià)的第二篇,主要是繼續(xù)完善郵箱激活賬號(hào)方面的功能,非常的詳細(xì),有需要的朋友可以參考下
    2014-10-10
  • PHP讀書筆記整理_結(jié)構(gòu)語句詳解

    PHP讀書筆記整理_結(jié)構(gòu)語句詳解

    下面小編就為大家?guī)硪黄狿HP讀書筆記整理_結(jié)構(gòu)語句詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • PHP后端銀聯(lián)支付及退款實(shí)例代碼

    PHP后端銀聯(lián)支付及退款實(shí)例代碼

    本篇文章主要介紹了PHP后端銀聯(lián)支付及退款實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • PHP之預(yù)定義接口詳解

    PHP之預(yù)定義接口詳解

    這篇文章主要整理了PHP之預(yù)定義接口,在平時(shí)項(xiàng)目過程中比較常用的四個(gè)接口:IteratorAggregate(聚合式aggregate迭代器Iterator)、Countable、ArrayAccess、Iterator,需要的朋友可以參考下
    2015-07-07
  • 去除php注釋和去除空格函數(shù)分享

    去除php注釋和去除空格函數(shù)分享

    這篇文章主要介紹了去除php注釋和去除空格函數(shù),php5中已提供相同功能的函數(shù),這里只為學(xué)習(xí)PHP,需要的朋友可以參考下
    2014-03-03
  • PHP魔術(shù)方法以及關(guān)于獨(dú)立實(shí)例與相連實(shí)例的全面講解

    PHP魔術(shù)方法以及關(guān)于獨(dú)立實(shí)例與相連實(shí)例的全面講解

    下面小編就為大家?guī)硪黄狿HP魔術(shù)方法以及關(guān)于獨(dú)立實(shí)例與相連實(shí)例的全面講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10

最新評論