protounit/watchtower

Monolog wrapper that sends your logs to Telegram channel

1.3 2018-07-28 10:55 UTC

This package is auto-updated.

Last update: 2024-04-22 02:40:47 UTC


README

Telegram handler for Monolog. Send log info to channel with pretty formatting and useful information

Telegram Channel Screenshot

Inspired by monolog-telegram

Dependencies

monolog/monolog guzzlehttp/guzzle

How it works

  • Watchtower handle Monolog methods to send messages
  • After text formatting it creates fork of process and send message via guzzle
  • Parent process doing nothing so you don't wait until it stops requesting Telegram API
  • Child process waits for response and die after job is done
  • If you set config option 'useFork' => false guzzle will wait for response from Telegram API and hold your app till

Too much messages per time could eat all of your RAM because there is no fork bomb detectors!

Install

composer require protounit/watchtower
composer install

Configuration

This array represents full amount of options you need to make package work

$config = [
	'botId'     => 'BOTID:BOTID',
	'channelId' => 'CHANNELID',
	'timeZone'  => 'Europe/Rome',
	'useFork    => true
];

Example

<?php
require __DIR__ . '/vendor/autoload.php';

use Monolog\Logger;
use Protounit\WatchTower\TelegramHandler;

/**
* Minimal required configuration
*/
$config = [
	'botId'     => 'BOTID:BOTID',
	'channelId' => 'CHANNELID',
	'timeZone'  => 'Europe/Rome',
];

/**
* Creating Logger interface with custom channel name
*/
$logger = new Logger('WatchTower');

/**
* Including custom handler for Monolog messages
*/
$logger->pushHandler(new TelegramHandler($config));

/**
* Example messages
*/
$logger->error(
	'An error occurred while creating another better example',
	[
	    'file'      => __FILE__,
	    'line'      => __LINE__,
	    'debugInfo' => [
		'message' => 'Yet another message',
	    ],
	]
);

/**
* Something more interesting
*/
$logger->critical(
'Cannot allocate memory: couldn\'t create child process',
	[
	    'file'      => __FILE__,
	    'line'      => __LINE__,
	    'debugInfo' => [
		'memory' => '640K',
	    ],
	]
);