proycer / logbook-symfony-bundle
Centralized web log viewer for monolog logs files
Installs: 9
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: ^7.4|^8.0
- ext-json: *
Requires (Dev)
- roave/security-advisories: dev-latest
- symfony/config: ^5.3
- symfony/dependency-injection: ^5.3
- symfony/framework-bundle: ^5.3
- symfony/http-kernel: ^5.3
- symfony/phpunit-bridge: ^5.3
README
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
- monolog/monolog
- ddtraceweb/monolog-parser
- evotodi/log-viewer-bundle
- Halfmoon front-end framework
- Tabler icons
- JetBrains Mono Font
- Dayjs plugin
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.