流明每日日志

Posted

技术标签:

【中文标题】流明每日日志【英文标题】:Lumen Daily Logs 【发布时间】:2015-11-26 02:38:31 【问题描述】:

我想在我的 Lumen 项目中添加一个每日日志。

我在 app.php (Folder Bootstrap/) 中试试这个

$logFile = 'laravel.log';

Log::useDailyFiles(storage_path().'/logs/'.$logFile);

但这让我犯了那个错误

调用未定义的方法 Monolog\logger::useDailyFiles()

感谢任何帮助...谢谢

【问题讨论】:

Lumen 没有带有该方法的 Writer 包装类。您需要获取 Monolog 实例,弹出默认处理程序,然后添加您自己的 RotatingFileHandler。至少我会这样做。 【参考方案1】:

如果您查看框架源代码here,您会发现它不会做日常日志,而是写入单个日志文件lumen.log。有一个可用的公共方法configureMonologUsing 看到here 并引用了here,您可以使用它来覆盖默认行为而无需扩展应用程序。

Lumen 只是将处理程序设置为独白,所以另一个好的解决方案是您可以这样做:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Monolog\Formatter\LineFormatter;
use Monolog\Handler\RotatingFileHandler;

class LogServiceProvider extends ServiceProvider

    /**
     * Configure logging on boot.
     *
     * @return void
     */
    public function boot()
    
        $maxFiles = 5;

        $handlers[] = (new RotatingFileHandler(storage_path("logs/lumen.log"), $maxFiles))
            ->setFormatter(new LineFormatter(null, null, true, true));

        $this->app['log']->setHandlers($handlers);
    

    /**
     * Register the log service.
     *
     * @return void
     */
    public function register()
    
        // Log binding already registered in vendor/laravel/lumen-framework/src/Application.php.
    

然后不要忘记将服务提供者添加到您的 Lumen bootstrap/app.php 中:

$app->register(\App\Providers\LogServiceProvider::class);

【讨论】:

我们可以创建自定义日志文件吗? @Sreenath 你是什么意思?你能更具体/提供更多细节吗? 我想通过每个用户的唯一 ID 创建日志文件。 啊。唔。您需要制作自己的自定义处理程序,然后用它替换上面的代码$handlers[] = ...。您可以复制RotatingFileHandler 并调整方法以满足您的需要,从当前用户处读取以创建文件名。您可能需要在处理程序中传递对应用程序的引用,或者查看会话或其他内容以获取用户。 感谢您的信息。【参考方案2】:

在 Lumen 5.6 中,更好的方法是将 .env 中的默认设置配置为 LOG_CHANNEL=daily

默认设置为LOG_CHANNEL=stack,使用单个文件进行日志记录。

【讨论】:

【参考方案3】:

从 5.6 版本开始,配置日志系统变得更加容易:

    如果项目不存在,请在项目中创建目录配置

    从 vendor/laravel/lumen-framework/config/logging.php 到你的项目配置目录

    编辑文件 config/logging.php 并根据自己的喜好调整频道属性。

    'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
    ],

【讨论】:

以上是关于流明每日日志的主要内容,如果未能解决你的问题,请参考以下文章

Apache 每日日志

每日一shellnginx日志切割

无法两次跟踪流明作业调度

NLog 2.0.1 每日归档日志文件

当 Heroku Papertrail 日志记录达到每日 10 MB 的限制时会发生啥?

如何将 log4j 每日日志轮换与基于文件大小的轮换和最大备份相结合?