【问题标题】:Laravel: change log path to include user folderLaravel:更改日志路径以包含用户文件夹
【发布时间】:2015-10-21 17:22:01
【问题描述】:

我使用 Laravel 5.1,并试图拦截默认记录器配置 (Monolog) 并将日志保存到包含用户名的不同路径。

当前日志保存到 storage/logs/laravel.log。

想要的路径如下

经过身份验证的用户: storage/logs/[username]/[date]_[api_path].log

其他用户日志可以保存在 storage/logs/guest/[date]_[api_path].log 下

服务提供者方法

有一个 LogServiceProvider,我可以在其中修改每个请求并根据需要设置路径。

public function boot(Request $request)
{

    $log = new Logger('View Logs');
    $user = \Auth::User()->getName(); // ERROR - uninitialized
    $path = 'storage/logs/'.$user.'/mylogfile.log'; // doesn't matter API path
    $log ->pushHandler(new StreamHandler($path, Logger::INFO));
    ...
 }

这种方法的问题是 Auth::user() 似乎未初始化。

为什么会发生这种情况,我该如何解决?

【问题讨论】:

    标签: laravel laravel-5 laravel-5.1


    【解决方案1】:

    您可能需要将其包装在 if 语句中,例如:

    if ( Auth::check() ) {
      // Do auth stuff
    }
    else {
      // Do unauth stuff
    }
    

    这能解决你的问题吗?

    【讨论】:

      【解决方案2】:

      这是因为Auth还没有初始化,调用太早了。

      有解决方法:

      • 创建日志初始化程序,并从中间件(或任何您想要的位置)调用它:
      class UserLogger
      {
          public function init()
          {
              $logger = new Logger('order');
              $currUserId = Auth::id();
              $logPath = storage_path('logs/by_user/' . $currUserId . '/' . Carbon::now()->toDateString() . '.log');
              $logger->pushHandler(new StreamHandler($logPath, Logger::INFO));
      
              return $logger;
          }
      }
      
      //app\Http\Middleware\Authenticate.php
      class Authenticate
      {
      
          public function handle($request, Closure $next, $guard = null)
          {
              $userLogger = new UserLogger();
              $logger = $userLogger->init();
              $context = ['some context data' => 'data'];
              $logger->info('custom user actions', $context);
      
           //...
      
      • Laravel 8 版本可以查看here

      【讨论】:

        猜你喜欢
        • 2013-10-10
        • 2015-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多