![](/img/trans.png)
[英]How do I write separate log files for each Log level in Laravel 4?
[英]How can I write separate log files in Laravel 5?
我想有一些单独的日志文件来存储我的一些API方法的调试数据。 像car_create.log
, car_update.log
等等。
我可以通过内置日志记录功能实现这一目标吗? 这不是一种错误的做法吗? 因为看起来几乎没有人有同样的问题。 任何建议或建议将不胜感激!
的错误日志记录和文档通知独白是由Laravel使用的底层日志包。 您可以使用Monolog做任何您想做的事情。
<?php
namespace App\Helpers\Common;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Carbon\Carbon;
class FileLogger extends Logger
{
protected $path = null;
public function __construct($name, $level = 'DEBUG', $path = null, array $processors = [ ])
{
$tz = static::$timezone = new \DateTimeZone(config('app.timezone'));
$handlers = [ ];
parent::__construct($name, $handlers, $processors);
$dtObj = Carbon::now($tz);
if ( ! $path) {
$path = $name . '-' . $dtObj->format('Y-m-d') . '.log';
}
$path = $this->path = storage_path('logs/' . $path);
$this->addStream($path, $level);
return $this;
}
public static function getLevelNum($level)
{
return static::getLevels()[ strtoupper($level) ];
}
public function addStream($path, $level = 'DEBUG')
{
if ( ! is_int($level)) {
$level = static::getLevelNum($level);
}
$this->pushHandler(new StreamHandler($path, $level));
return $this;
}
public function addRecord($level, $message, array $context = array())
{
if ( ! is_int($level)) {
$level = static::getLevelNum($level);
}
parent::addRecord($level, $message, $context);
return $this;
}
}
use App\Helpers\Common\FileLogger;
// ...
$level = 'DEBUG';
$logger = new FileLogger('NAME', $level);
$logger->addRecord($level, $message, $context);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.