contributte / logging
Plug-in support logging for Tracy / Nette Framework
Fund package maintenance!
f3l1x
contributte.org/partners.html
Installs: 1 086 679
Dependents: 1
Suggesters: 1
Security: 0
Stars: 21
Watchers: 4
Forks: 17
Open Issues: 5
pkg:composer/contributte/logging
Requires
- php: >=8.2
- tracy/tracy: ^2.11.0
Requires (Dev)
- contributte/phpstan: ~0.2.0
- contributte/qa: ~0.4.0
- contributte/tester: ~0.3.0
- nette/di: ^3.2.0
- sentry/sdk: ^4.0.0
Suggests
- nette/di: to use TracyLoggingExtension
- sentry/sdk: to use SentryLoggingExtension
Conflicts
- nette/di: <3.0
README
Website 🚀 contributte.org | Contact 👨🏻💻 f3l1x.io | Twitter 🐦 @contributte
Disclaimer
| ⚠️ | This project is no longer being maintained. Please use contributte/sentry. |
|---|
| Composer | contributte/logging |
|---|---|
| Version | |
| PHP | |
| License |
Documentation
Content
Tracy
First of all, we need to register our universal tuned logger for the future purpose.
extensions: logging: Contributte\Logging\DI\TracyLoggingExtension
After that, we need to setup logDir.
logging: logDir: %appDir%/../log
Basically, it overrides Tracy's default logger by our universal, pluggable logger.
Original logger is still in DIC with logging.originalLogger key.
Default loggers
There are 3 types of loggers defined by default.
- FileLogger - creates
<priority>.logfile - BlueScreenFileLogger - creates exception-*.html from all throwable
- SendMailLogger - sends throwable/message to email
You can redefine these loggers in logging.loggers.
logging: loggers: - Contributte\Logging\FileLogger(%logDir%) - Contributte\Logging\BlueScreenFileLogger(%logDir%) - Contributte\Logging\SendMailLogger( Contributte\Logging\Mailer\TracyMailer( from@email, [to@email, to2@email] ), %logDir% ) - App\Model\MyCustomerLogger
This configuration is functionally equal to original Tracy's logger, only separated to multiple classes.
SendMailLogger
Our SendMailLogger also allows configure priority levels.
services: sendMaillogger: setup: - setAllowedPriority([ Contributte\Logging\ILogger::WARNING, Contributte\Logging\ILogger::ERROR ])
Custom logger
To create your custom logger you have to implement Contributte\Logging\ILogger.
<?php namespace App\Model; use Contributte\Logging\ILogger; class MyDatabaseLogger implements ILogger { /** * @param mixed $message * @return void */ public function log($message, string $priority = self::INFO): void { // store exception to database... } }
And register it in neon.
logging: loggers: - App\Model\MyDatabaseLogger(@connection)
Slack
extensions: logging: Contributte\Logging\DI\TracyLoggingExtension slack: Contributte\Logging\DI\SlackLoggingExtension
There is a configuration you have to fill in.
| Key | Requirements | Default |
|---|---|---|
| url | required | - |
| channel | required | - |
| username | optional | Tracy |
| icon_emoji | optional | 🚀 |
| icon_url | optional | - |
slack: url: https://hooks.slack.com/services/<code1>/<code2>/<code3> channel: tracy
Formatters
By default, there are 5 formatters for your slack-channel-pleasure.
You can disable it like this:
slack: formatters: []
And configure your own formatters. They will be loaded automatically, if
you implement needed interface (Contributte\Logging\Slack\Formatter\IFormatter).
services: - App\Slack\MySuperTrouperFormatter
Contributte\Logging\Slack\Formatter\ContextFormatter
- Setup
contextwith all configured data (channel, icon, etc).
Contributte\Logging\Slack\Formatter\ColorFormatter
danger->ILogger::CRITICAL#ff0000->ILogger::EXCEPTIONwarning->ILogger::ERROR
Contributte\Logging\Slack\Formatter\ExceptionFormatter
Contributte\Logging\Slack\Formatter\ExceptionPreviousExceptionsFormatter
Contributte\Logging\Slack\Formatter\ExceptionStackTraceFormatter
Sentry
extensions: logging: Contributte\Logging\DI\TracyLoggingExtension sentry: Contributte\Logging\DI\SentryLoggingExtension
This extension requires to have sentry installed.
composer require sentry/sdk:"^2.0"
Now you should go to project Settings page -> Client Keys (DSN) section. There you obtained DNS url. Put the url into neon file.
sentry: url: https://<key>@sentry.io/<project>
SentryLoggingExtension adds SentryLogger with url configuration. It works as SendMailLogger.
It means that it sends messages/throwable with ILogger::ERROR, ILogger::EXCEPTION, ILogger::CRITICAL priorities.
But if you need other priorities, you can change configuration.
services: sentry.logger: setup: - setAllowedPriority([ Contributte\Logging\ILogger::WARNING, Contributte\Logging\ILogger::ERROR ])
Development
This package was maintained by these authors.
Consider to support contributte development team. Also thank you for using this package.


