bnomei / kirby3-monolog
Use Monolog to log data to files/databases/notifications/...
Installs: 7 657
Dependents: 0
Suggesters: 1
Security: 0
Stars: 2
Watchers: 3
Forks: 0
Open Issues: 0
Type:kirby-plugin
Requires
- php: >=8.0
- getkirby/composer-installer: ^1.1
- monolog/monolog: 3.8
Requires (Dev)
- getkirby/cms: ^4.4.0
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^9.5
README
Use Monolog to log data to files/databases/notifications/...
Quickstart
site/templates/home.php
monolog()->info('test-' . md5((string) time()), [ 'title' => $page->title(), // field will be normalized 'page' => $page->id(), ]);
site/logs/2019-10-27.log
[2019-10-27 19:10:30] default.INFO: test-d4a22afc0f735f551748d17c959b3339 {"title":"Home","page":"home"} []
Page-Method
This plugin also registers a Page-Method. It will use the AutoID if available or fallback to hash based on the page->uid()
.
$page->monolog()->info('test-' . md5((string) time()), []);
site/logs/{HASH}.log
[2019-10-27 19:10:30] {HASH}.INFO: test-d4a22afc0f735f551748d17c959b3339 {} []
Installation
- unzip master.zip as folder
site/plugins/kirby3-monolog
or git submodule add https://github.com/bnomei/kirby3-monolog.git site/plugins/kirby3-monolog
orcomposer require bnomei/kirby3-monolog
Similar Plugin
- Log is simpler and can just write to files
Setup
Use the default channel provided by this plugin or define your own Channels. Monolog comes bundled with a lot of handlers, formatters and processors.
- write to file or syslogs
- send mails
- post to slack
- insert into local or remote databases
- format as JSON
- append file/class/method Introspection
- append a UUID
- append URI, post method and IP
- ... create your own
Usecase
Named Channel => Logger
// write to channel 'default' which writes to file // defined at 'bnomei.monolog.file' callback $log = \Bnomei\Log::singleton()->channel('default'); // is same as $log = monolog('default'); // or simply $log = monolog(); // get a logger instance by channel by name $securityLogger = monolog('security');
Add records to the Logger
Message
$log = monolog(); $log->warning('Foo'); // or with method chaining monolog()->error('Bar');
Message and Context
monolog()->info('Adding a new user', [ 'username' => $user->name(), ]); // increment Field `visits` in current Page $page = $page->increment('visits'); monolog()->info('Incrementing Field', [ 'page' => $page->id(), 'visits' => $page->visits()->toInt(), ]);
Default Channel
The default channel provided by this plugin writes file to the site/logs
folder. It will be using the filename format date('Y-m-d') . '.log'
and normalizes the data to make logging Kirby Objects easier.
HINT: Without that normalization you would have to call
->value()
or cast asstring
on every Kirby Field before adding its value as context data.
HINT: The default channel logs will be generated at same folder level as your accounts, cache or sessions. This way server setups for zero-downtime deployments are supported out of the box.
Custom Channel
site/config/config.php
return [ // other config settings ... // (optional) add custom channels 'bnomei.monolog.channels' => [ 'security' => function() { $logger = new \Monolog\Logger('security'); // add handlers, formatters, processors and then... return $logger; } ], ];
Custom Channel Extends
site/config/config.php
return [ // other config settings ... // (optional) add custom channels from other plugins 'bnomei.monolog.channels.extends' => [ 'myplugin.name.channels', // array of channel definitions in your other option ], ];
Dependencies
Disclaimer
This plugin is provided "as is" with no guarantee. Use it at your own risk and always test it yourself before using it in a production environment. If you find any issues, please create a new issue.
License
It is discouraged to use this plugin in any project that promotes racism, sexism, homophobia, animal abuse, violence or any other form of hate speech.