我正在使用以下更改我的日志路径:
\Log::useDailyFiles(...)
但我仍然在/storage/logs/
中获取日志条目。我怎样才能仅使用我的日志路径?
答案 0 :(得分:3)
Laravel在引导ConfigureLogging
类时已经注册了记录器的实例。因此,当您使用Log::useDailyFiles()
时,您只是添加了一个额外的日志处理程序,这就是您在标准storage/logs/laravel.log
中获取日志条目的原因。
要覆盖默认日志处理程序,Laravel会在应用程序实例上提供configureMonologUsing
方法。因此,在bootstrap/app.php
语句之前的return $app;
文件中,添加以下内容:
$app->configureMonologUsing(function($monolog) use ($app) {
$monolog->pushHandler(
(new Monolog\Handler\RotatingFileHandler(
// Set the log path
'/custom/path/to/custom.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))
);
});
传递给RotatingFileHandler
的第二个参数尝试从log_max_files
获取config/app.php
的配置值,以确定它应保留多少每日日志文件,如果找不到一个默认为5
。如果您想保留无限数量的每日日志文件,请改为通过0
。
您可以在Laravel Documentation中了解有关记录配置的更多信息。
答案 1 :(得分:0)
Laravel 5:bootstrap / app.php
$app->configureMonologUsing(function($monolog) use ($app) {
$monolog->pushHandler(
(new Monolog\Handler\RotatingFileHandler(
// Set the log path
$app->storagePath().'/logs/app_error.log',
// Set the number of daily files you want to keep
$app->make('config')->get('app.log_max_files', 30)
))->setFormatter(new Monolog\Formatter\LineFormatter(null, null, true, true))
);
});
$app->configureMonologUsing(function($monolog) use ($app) {
$handler = new Monolog\Handler\StreamHandler($app->storagePath().'/logs/app_error.log');
$handler->setFormatter(new \Monolog\Formatter\LineFormatter(null, null, true, true));
$monolog->pushHandler($handler);
});