Laravel 5 - 更改默认日志位置,将日志文件移出应用程序

Laravel 5 - change default log location, move log file outside the app

如何将默认日志文件位置 <project-name>/storage/logs/laravel.log 更改为类似 /var/logs/<project-name>/laravel.log 的位置?

我通过使用 errorlog 日志记录模型和配置网络服务器解决了这个问题。

1.配置Laravel:

config/app.php配置文件中:

'log' => 'errorlog'

详细了解 Laravel 日志配置:http://laravel.com/docs/5.1/errors#configuration

2。配置网络服务器(在我的例子中是 Nginx):

error_log    /var/log/nginx/<project_name>-error.log;

对于那些不想使用 errorlog 而只想替换要登录的文件的人,您可以这样做:

\Log::useFiles(env('APP_LOG_FILE'), config('app.log_level', 'debug'));
$handlers = \Log::getMonolog()->getHandlers();
$handler = array_shift($handlers);
$handler->setBubble(false);

关于 App\Providers\AppServiceProvider.php 或任何 Provider。这将记录到 APP_LOG_FILE 的值而不是默认值 laravel.log。将冒泡设置为 true,应用程序将登录这两个文件。

对于仍然遇到此 post 希望更改其日志文件位置的任何人,我相信现在在 Laravel 的较新版本中更容易做到这一点。我目前正在使用 8.x

在您的 /config/logging.php 中,您可以为单日和每日日志定义 path。只需更新您要更改的任何一个即可。只需确保您还包括日志文件的名称,而不仅仅是您希望保存它的路径。

'single' => [
    'driver' => 'single',
    'path' => "/your/desired/log/path/file.log", // edit here
    'level' => env('LOG_LEVEL', 'debug'),
],

'daily' => [
    'driver' => 'daily',
    'path' => "/your/desired/log/path/file.log", // edit here
    'level' => env('LOG_LEVEL', 'debug'),
    'days' => 14,
]