proycer/logbook-symfony-bundle

Centralized web log viewer for monolog logs files

v0.1 2021-09-01 17:22 UTC

This package is auto-updated.

Last update: 2024-04-29 04:47:29 UTC


README

Total Downloads Latest Stable Version Build Status

Details!

LogBook is a centralized web viewer for monolog logs files. It allows you to list and view logs from local and external project, in one easy place with highlighting and level and channel filtering.

Installation

Install the package with:

composer require proycer/logbook-symfony-bundle

Two-step Configuration

Create the routes yaml file config/routes/log_book.yaml

log_book:
  resource: '@LogBookBundle/Resources/config/routes.xml'
  prefix: '/logs'

Create the config yaml file config/packages/log_book.yaml

# List of log files to show
log_book:
    log_files:
        # Unique identifier for the logfile
        somelog1:
            # Use full path
            path: 'Some/Full/Path/to/Log/File.Ext'

            # Pretty name to display else file name
            name: My Log Files Pretty Name 

            # (Optional) Number of days to pull from log. See ddtraceweb/monolog-parser.
            days: 0

            # (Optional) See ddtraceweb/monolog-parser for patterns.
            pattern: null

            # (Optional) PHP style date format of log file
            date_format: 'Y-m-d\TH:i:s.uP'
            
            # (Optional) Log level spelling. Case sensitive
            levels:
                debug: DEBUG
                info: INFO
                notice: NOTICE
                warning: WARNING
                error: ERROR
                alert: ALERT
                critical: CRITICAL
                emergency: EMERGENCY

        somelog2:
            path: '/path/to/logfile.log'
            name: Pretty Logfile Name

    # Show App logs in var/log
    show_app_logs: true

Advanced Configuration

pattern

The default pattern is '/\[(?P<date>.*)\] (?P<logger>\w+).(?P<level>\w+): (?P<message>[^\[\{].*[\]\}])/'
You can change the regex pattern to match your log file but the pattern must include P<date>, P<logger>, P<level>, and P<message> as regex groups.
Example '/\[(?P<date>.+)\] (?P<logger>\w+).(?P<level>\w+): (?P<message>.*)/'

days

Setting days in the config to 0 will parse to whole log which is the default. Days set to 5 for example will parse the log until the date portion of the pattern if greater than DateTime('now') minus 5 days.

date_format

This should be the php date format of the date portion of the pattern. Default is Y-m-d\TH:i:s.uP / PHP DateFormat

levels

Override the default spelling for each level. e.g. WARNING -> WARN

Roadmap

  • Improve UX/UI
  • Live searching and filters
  • Update to PHP 8
  • Automate installation
  • Show advance traceback
  • Improve logs loading (as json)
  • Improve searching and filter

Thanks

Contributions

Contributions are very welcome!

Please create detailed issues and PRs.

License

This package is free software distributed under the terms of the MIT license.