lumisys/log-viewer-bundle

Symfony 6及更高版本的日志查看器包

安装: 22

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 1

类型:symfony-bundle

1.2.5 2024-08-18 19:32 UTC

README

License Minimum PHP Version Minimum Symfony Version Vuejs codecov Run tests

Symfony的日志查看器

灵感来源于opcodesio/log-viewer for Laravel log-viewer

日志查看器:为您的Symfony应用程序提供的包。它提供了一个用户友好的界面来读取、过滤和搜索日志文件。

默认情况下,它将读取位于var/log目录中的Monolog日志,但可以配置为读取任何目录中的日志。

功能

  • 📂 在%kernel.logs_dir%目录中查看所有Monolog日志
  • 📂 查看其他类型的日志 - Apache、Nginx或自定义日志,
  • 🔍 搜索日志,
  • 🔍 通过日志级别(错误、信息、调试等)、通道、日期范围或日志内容包含或排除进行过滤
  • 🔍 同时搜索多个日志文件,
  • 🌑 深色模式
  • 🖥️ 多主机支持,
  • 💾 从UI中下载删除日志文件,
  • ☎️ API访问文件夹、文件和日志条目,

入门

要求

  • PHP 8.1+
  • Symfony 6.0+或7.0+

安装

使用composer

composer require fdekker/log-viewer-bundle

如果您不使用Symfony Flex,则需要手动启用该包

# /config/bundles.php
return [
    // ...
    FD\LogViewer\FDLogViewerBundle::class => ['all' => true],
];

并通过创建文件/config/routes/fd_log_viewer.php添加路由

<?php
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;

return static function (RoutingConfigurator $routingConfigurator): void {
    $routingConfigurator->import('.', 'fd_symfony_log_viewer')->prefix('/log-viewer');
};

通过将以下行添加到/config/packages/security.php来确保对日志的访问是安全的

return static function (SecurityConfig $security): void {
    ...
    $security->accessControl()->path('^/log-viewer')->roles(['ROLE_ADMIN']);
};

安装包后,通过运行以下命令发布前端资源

php bin/console assets:install

使用

安装完成后,您可以直接通过浏览器访问日志查看器

默认情况下,它位于您域名的/log-viewer

配置

默认配置:(配置参考)

fd_log_viewer:
    home_route: null

    log_files:
        monolog:
            type: monolog
            name: Monolog
            finder:
                in: "%kernel.logs_dir%"
                name: "*.log"
                depth: '== 0'
                ignoreUnreadableDirs: true
                followLinks: false
            downloadable: false
            deletable: false
            start_of_line_pattern: '/^\[\d{4}-\d{2}-\d{2}[^]]*]\s+\S+\.\S+:/'
            log_message_pattern: '/^\[(?P<date>[^\]]+)\]\s+(?P<channel>[^\.]+)\.(?P<severity>[^:]+):\s+(?P<message>.*)\s+(?P<context>[[{].*?[\]}])\s+(?P<extra>[[{].*?[\]}])\s+$/s'
            date_format: "Y-m-d H:i:s"

    hosts:
        localhost:
            name: Local
            host: null

阅读更多