Advertisement
Orion55

Untitled

Feb 19th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.39 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use Monolog\Logger;
  6. use Monolog\Handler\RotatingFileHandler;
  7. use Monolog\Processor\WebProcessor;
  8. use Monolog\Formatter\LineFormatter;
  9. use Auth;
  10.  
  11.  
  12. class LoggerController
  13. {
  14.     private $channels = [];
  15.  
  16.     /**
  17.      * получить или создать логгер
  18.      * @param $channelName
  19.      * @return mixed     *
  20.      */
  21.     public function getLogger($channelName)
  22.     {
  23.         if (!array_key_exists($channelName, $this->channels)) {
  24.             $this->createLogger($channelName);
  25.         }
  26.         return $this->channels[$channelName];
  27.     }
  28.  
  29.     /**
  30.      * создать логгер
  31.      * @param $channelName
  32.      * @return Logger
  33.      */
  34.     private function createLogger($channelName)
  35.     {
  36.         $logger = new Logger($channelName);
  37.         $parametr = 'logs\\' . $channelName . '.' . 'log';
  38.         $handler = new RotatingFileHandler(storage_path($parametr), Logger::INFO);
  39.  
  40.         $user = Auth::user();
  41.         $handler->setFormatter(new LineFormatter("[%datetime%] %channel%.%level_name%: " . 'User Name: ' . $user->getAttributeValue('name') . ' | User Email: ' . $user->getAttributeValue('email') . ' | ' . "%message% %extra% %context%\n"));
  42.         $logger->pushHandler($handler);
  43.         $logger->pushProcessor(new WebProcessor);
  44.  
  45.         $this->channels[$channelName] = $logger;
  46.         return $logger;
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement