好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 自定義Laravel (monolog)日志位置,并增加請求ID的實現

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

熱門標簽:事業單位如何百度地圖標注 天津營銷電話機器人加盟代理 太原極信防封電銷卡 熱線電話機器人 格陵蘭島地圖標注 地圖標注入哪個科目 福泉電話機器人 南寧crm外呼系統平臺 電銷招聘機器人

修改 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 的錯誤和日志記錄

或者

創建app\Providers\LogServiceProvider.php 文件

修改 config\app.php providers 增加

App\Providers\LogServiceProvider::class

然后 App\Providers\LogServiceProvider.php 內容如下

?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-設置
   */
  $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;
 }
}

優化以后

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();

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

 }

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

 /**
  * 根據日期來分割日志
  */
 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 );
  });
 }

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


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

 /**
  * 日志文件最多個數
  * @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";
 }

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

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

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

您可能感興趣的文章:
  • laravel日志優化實例講解
  • 解決laravel中日志權限莫名變成了root的問題
  • 關于laravel 日志寫入失敗問題匯總
  • Laravel 5.5 異常處理 & 錯誤日志的解決
  • Laravel 重寫日志,讓日志更優雅

標簽:寶雞 通化 金華 郴州 佳木斯 香港 自貢 阿克蘇

巨人網絡通訊聲明:本文標題《自定義Laravel (monolog)日志位置,并增加請求ID的實現》,本文關鍵詞  自定義,Laravel,monolog,日志,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《自定義Laravel (monolog)日志位置,并增加請求ID的實現》相關的同類信息!
  • 本頁收集關于自定義Laravel (monolog)日志位置,并增加請求ID的實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 揉我奶头?啊?嗯高潮av| 偷性小说| 97人妻人人玩人人爽人人喊| 好吊妞788wwwcom| 日日爽视频| japanese色系xxx| 被多个强壮黑人灌满精H.漫画| ??嫩草影院入口??| 双乳换着吃奶视频视频| 色片在线观看| 欧美.亚洲.日韩.另类.AV| 巜丰满的欲妇2在线观看| 擦逼逼| 最刺激黄a大片老师| 艳降勾魂未删减完整版下载bt| 少妇婬荡呻吟久久久久久野花谷 | 蜜桃成熟片推荐电影在线| 美肉奴隷赤坂丽HD在线 | 小粉逼| 中文人妻熟妇精品乱又伧老牛在线| 《美国式禁忌3》在线| 三个不道德的女人| 丝袜老片dorcelclub| 香樵视频免费看黄包毛片| 女人18高潮特黄A片视频软件| 不要舔花心| 桃花社区| 美女裸体全身秘?遮挡视频| 日本一级av一片中文字幕禁欲| 天堂日韩| 男女叉叉视频| 欧美AV人人夜夜澡人人爽麻豆 | 久久小说网站| 1000部拍拍拍18勿入免贳网站| 性做爰免费视频观看| 无尽?触手?3D?动漫网站| 久久理论片琪琪电影院| 抖阴老司机| 国产精品美女久久久久浪潮AV| yy6080午夜理论片| 很很色在线视频|