Laravel版本:5.4.25 PHP版本:7.0
在之前版本的laravel中,有一个ConfigureLogging类来执行此操作。但是在最新版本的laravel中删除了类而不是新的LogServiceProvider:
protected function configureDailyHandler(Application $app, Writer $log)
{
$log->useDailyFiles(
$app->storagePath() . '/logs/customLogName.log',
$app->make('config')->get('app.log_max_files', 5)
);
}
我想覆盖此方法。
我该怎么做?
请帮忙。
感谢。
答案 0 :(得分:4)
最后我得到了它。
在返回app/bootstrap/app.php
实例后,在$app
文件中添加此内容:
$app->configureMonologUsing(function($monolog) use ($app) {
$monolog->pushHandler(
(new Monolog\Handler\RotatingFileHandler(
// Set the log path
$app->storagePath().'/logs/customLogName.log',
// Set the number of daily files you want to keep
$app->make('config')->get('app.log_max_files', 5)
))->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true, true))
);
});
return $app;
这就是诀窍
答案 1 :(得分:1)
对于Laravel 5.5
在路径vendor/laravel/framework/src/Illuminate/Log/LogServiceProvider.php
更改功能configureDailyHandler
第$this->app->storagePath().'/logs/laravel.log', $this->maxFiles(),
行
对此
$this->app->storagePath().'/logs/laravel-'.get_current_user().'.log', $this->maxFiles(),
或者只需将其添加到bootstrap / app.php
$app->configureMonologUsing(function (Monolog\Logger $monolog) {
$filename = storage_path('logs/' . php_sapi_name() . '-' . posix_getpwuid(posix_geteuid())['name'] . '.log');
$monolog->pushHandler($handler = new Monolog\Handler\RotatingFileHandler($filename, 30));
$handler->setFilenameFormat('laravel-{date}-{filename}', 'Y-m-d');
$formatter = new \Monolog\Formatter\LineFormatter(null, null, true, true);
$formatter->includeStacktraces();
$handler->setFormatter($formatter);
});
答案 2 :(得分:1)
这可能已经改变了,但是目前(2020年使用Laravel 7)配置该配置的方法较少,这仅仅是因为config/logging.php
中存在日志记录通道,例如。 daily
驱动程序通过daily
频道:
每天-一个基于
RotatingFileHandler
的{{1}}驱动程序,每天旋转。
还可以在其中更改默认的日志记录通道(如果需要):
Monolog
例如,一个人可以直接发布到频道。 'default' => env('LOG_CHANNEL', 'stack')
驱动程序转到一个自定义频道
(此频道会产生大量垃圾邮件,我希望将它们隔离在一个文件中):
daily
与此类似,与仅更改输出文件名相比,可以更好地组织日志记录。