diff --git a/README.md b/README.md index 4b305ca..bf214c5 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,32 @@ config(['telegram-logger.template'=>'laravel-telegram-logging::custom']) ``` 2. Use `Log` as usual. +## Configuring a different chat id or token per channel + +1. Add `chat_id` or `token` to channels in `config/logging.php`. Overrides `config('telegram.chat_id')`. +```php +[ + 'channels' => [ + [ + 'company' => [ + 'driver' => 'custom', + 'via' => TelegramLogger::class, + 'chat_id' => env('TELEGRAM_COMPANY_CHAT_ID'), + 'token' => env('TELEGRAM_COMPANY_BOT_TOKEN') + ], + + 'operations' => [ + 'driver' => 'custom', + 'via' => TelegramLogger::class, + 'chat_id' => env('TELEGRAM_OPERATIONS_CHAT_ID'), + 'token' => env('TELEGRAM_OPERATIONS_BOT_TOKEN') + ] + ] + ] +] +``` + +2. Use `Log` as usual. ## Lumen support To make it work with Lumen, you need also run two steps: diff --git a/src/TelegramHandler.php b/src/TelegramHandler.php index 3e5ad57..a7d19e0 100644 --- a/src/TelegramHandler.php +++ b/src/TelegramHandler.php @@ -14,6 +14,13 @@ */ class TelegramHandler extends AbstractProcessingHandler { + /** + * Logger config + * + * @var array + */ + private $config; + /** * Bot API token * @@ -46,15 +53,16 @@ class TelegramHandler extends AbstractProcessingHandler * TelegramHandler constructor. * @param int $level */ - public function __construct($level) + public function __construct(array $config) { - $level = Logger::toMonologLevel($level); + $level = Logger::toMonologLevel($config['level']); parent::__construct($level, true); // define variables for making Telegram request - $this->botToken = config('telegram-logger.token'); - $this->chatId = config('telegram-logger.chat_id'); + $this->config = $config; + $this->botToken = $this->getConfigValue('token'); + $this->chatId = $this->getConfigValue('chat_id'); // define variables for text message $this->appName = config('app.name'); @@ -116,4 +124,18 @@ private function sendMessage(string $text): void file_get_contents('https://api.telegram.org/bot'.$this->botToken.'/sendMessage?' . $httpQuery); } + + /** + * @param string $key + * @param string $defaultConfigKey + * @return string + */ + private function getConfigValue($key, $defaultConfigKey = null): string + { + if (isset($this->config[$key])) { + return $this->config[$key]; + } + + return config($defaultConfigKey ?: "telegram-logger.$key"); + } } diff --git a/src/TelegramLogger.php b/src/TelegramLogger.php index c0ddac0..77d4252 100644 --- a/src/TelegramLogger.php +++ b/src/TelegramLogger.php @@ -21,7 +21,7 @@ public function __invoke(array $config) return new Logger( config('app.name'), [ - new TelegramHandler($config['level']) + new TelegramHandler($config), ] ); }