Skip to content

Fix logging deprecation output #983

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ Exclamation symbols (:exclamation:) note something of importance e.g. breaking c
- [:ledger: View file changes][Unreleased]
### Added
### Changed
- Logging only updates or only debug/errors is now possible.
### Deprecated
### Removed
### Fixed
- Don't output deprecation notices if no logging is enabled.
### Security

## [0.59.0] - 2019-07-07
Expand Down
11 changes: 6 additions & 5 deletions src/TelegramLog.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ class TelegramLog
*/
public static function initialize(LoggerInterface $logger = null, LoggerInterface $update_logger = null)
{
// Clearly deprecated code still being executed.
if ($logger === null) {
if ($logger === null && $update_logger === null) {
// Clearly deprecated code still being executed.
(defined('PHPUNIT_TESTSUITE') && PHPUNIT_TESTSUITE) || trigger_error('A PSR-3 compatible LoggerInterface object must be provided. Initialise with a preconfigured logger instance.', E_USER_DEPRECATED);
$logger = new Logger('bot_log');
} elseif ($logger instanceof Logger) {
Expand Down Expand Up @@ -286,11 +286,12 @@ public static function __callStatic($name, array $arguments)
} elseif ($name === 'update') {
$logger = self::$update_logger;
$name = 'info';
} else {
return;
}

self::initialize(self::$logger, self::$update_logger);
// Clearly we have no logging enabled.
if ($logger === null) {
return;
}

// Replace any placeholders from the passed context.
if (count($arguments) >= 2) {
Expand Down
58 changes: 37 additions & 21 deletions tests/unit/TelegramLogTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

namespace Longman\TelegramBot\Tests\Unit;

use Longman\TelegramBot\Exception\TelegramLogException;
use Longman\TelegramBot\TelegramLog;
use Monolog\Handler\StreamHandler;
use Monolog\Logger;
Expand All @@ -27,17 +28,18 @@ class TelegramLogTest extends TestCase
* @var array Dummy logfile paths
*/
private static $logfiles = [
'error' => '/tmp/php-telegram-bot-errorlog.log',
'debug' => '/tmp/php-telegram-bot-debuglog.log',
'update' => '/tmp/php-telegram-bot-updatelog.log',
'external' => '/tmp/php-telegram-bot-externallog.log',
'error' => '/tmp/php-telegram-bot-error.log',
'debug' => '/tmp/php-telegram-bot-debug.log',
'update' => '/tmp/php-telegram-bot-update.log',
'external' => '/tmp/php-telegram-bot-external.log',
'external_update' => '/tmp/php-telegram-bot-external_update.log',
];

protected function setUp()
{
// Make sure no logger instance is set before each test.
TestHelpers::setStaticProperty('Longman\TelegramBot\TelegramLog', 'logger', null);
TestHelpers::setStaticProperty('Longman\TelegramBot\TelegramLog', 'update_logger', null);
TestHelpers::setStaticProperty(TelegramLog::class, 'logger', null);
TestHelpers::setStaticProperty(TelegramLog::class, 'update_logger', null);
}

protected function tearDown()
Expand All @@ -48,39 +50,35 @@ protected function tearDown()
}
}

/**
* @expectedException \Longman\TelegramBot\Exception\TelegramLogException
*/
public function testNewInstanceWithoutErrorPath()
{
$this->setExpectedException(TelegramLogException::class);
TelegramLog::initErrorLog('');
}

/**
* @expectedException \Longman\TelegramBot\Exception\TelegramLogException
*/
public function testNewInstanceWithoutDebugPath()
{
$this->setExpectedException(TelegramLogException::class);
TelegramLog::initDebugLog('');
}

/**
* @expectedException \Longman\TelegramBot\Exception\TelegramLogException
*/
public function testNewInstanceWithoutUpdatePath()
{
$this->setExpectedException(TelegramLogException::class);
TelegramLog::initUpdateLog('');
}

public function testErrorStream()
{
$file = self::$logfiles['error'];

$this->assertFileNotExists($file);
TelegramLog::initErrorLog($file);
TelegramLog::error('my error');
TelegramLog::error('my 50% error');
TelegramLog::error('my old %s %s error', 'custom', 'placeholder');
TelegramLog::error('my new {place} {holder} error', ['place' => 'custom', 'holder' => 'placeholder']);

$this->assertFileExists($file);
$error_log = file_get_contents($file);
$this->assertContains('bot_log.ERROR: my error', $error_log);
Expand All @@ -92,12 +90,14 @@ public function testErrorStream()
public function testDebugStream()
{
$file = self::$logfiles['debug'];

$this->assertFileNotExists($file);
TelegramLog::initDebugLog($file);
TelegramLog::debug('my debug');
TelegramLog::debug('my 50% debug');
TelegramLog::debug('my old %s %s debug', 'custom', 'placeholder');
TelegramLog::debug('my new {place} {holder} debug', ['place' => 'custom', 'holder' => 'placeholder']);

$this->assertFileExists($file);
$debug_log = file_get_contents($file);
$this->assertContains('bot_log.DEBUG: my debug', $debug_log);
Expand All @@ -109,12 +109,14 @@ public function testDebugStream()
public function testUpdateStream()
{
$file = self::$logfiles['update'];

$this->assertFileNotExists($file);
TelegramLog::initUpdateLog($file);
TelegramLog::update('my update');
TelegramLog::update('my 50% update');
TelegramLog::update('my old %s %s update', 'custom', 'placeholder');
TelegramLog::update('my new {place} {holder} update', ['place' => 'custom', 'holder' => 'placeholder']);

$this->assertFileExists($file);
$update_log = file_get_contents($file);
$this->assertContains('my update', $update_log);
Expand All @@ -125,14 +127,18 @@ public function testUpdateStream()

public function testExternalStream()
{
$file = self::$logfiles['external'];
$file = self::$logfiles['external'];
$file_update = self::$logfiles['external_update'];
$this->assertFileNotExists($file);
$this->assertFileNotExists($file_update);

$external_monolog = new Logger('bot_external_log');
$external_monolog->pushHandler(new StreamHandler($file, Logger::ERROR));
$external_monolog->pushHandler(new StreamHandler($file, Logger::DEBUG));
$external_logger = new Logger('bot_external_log');
$external_logger->pushHandler(new StreamHandler($file, Logger::ERROR));
$external_logger->pushHandler(new StreamHandler($file, Logger::DEBUG));
$external_update_logger = new Logger('bot_external_update_log');
$external_update_logger->pushHandler(new StreamHandler($file_update, Logger::INFO));

TelegramLog::initialize($external_monolog);
TelegramLog::initialize($external_logger, $external_update_logger);
TelegramLog::error('my error');
TelegramLog::error('my 50% error');
TelegramLog::error('my old %s %s error', 'custom', 'placeholder');
Expand All @@ -141,9 +147,15 @@ public function testExternalStream()
TelegramLog::debug('my 50% debug');
TelegramLog::debug('my old %s %s debug', 'custom', 'placeholder');
TelegramLog::debug('my new {place} {holder} debug', ['place' => 'custom', 'holder' => 'placeholder']);
TelegramLog::update('my update');
TelegramLog::update('my 50% update');
TelegramLog::update('my old %s %s update', 'custom', 'placeholder');
TelegramLog::update('my new {place} {holder} update', ['place' => 'custom', 'holder' => 'placeholder']);

$this->assertFileExists($file);
$file_contents = file_get_contents($file);
$this->assertFileExists($file_update);
$file_contents = file_get_contents($file);
$file_update_contents = file_get_contents($file_update);
$this->assertContains('bot_external_log.ERROR: my error', $file_contents);
$this->assertContains('bot_external_log.ERROR: my 50% error', $file_contents);
$this->assertContains('bot_external_log.ERROR: my old custom placeholder error', $file_contents);
Expand All @@ -152,5 +164,9 @@ public function testExternalStream()
$this->assertContains('bot_external_log.DEBUG: my 50% debug', $file_contents);
$this->assertContains('bot_external_log.DEBUG: my old custom placeholder debug', $file_contents);
$this->assertContains('bot_external_log.DEBUG: my new custom placeholder debug', $file_contents);
$this->assertContains('bot_external_update_log.INFO: my update', $file_update_contents);
$this->assertContains('bot_external_update_log.INFO: my 50% update', $file_update_contents);
$this->assertContains('bot_external_update_log.INFO: my old custom placeholder update', $file_update_contents);
$this->assertContains('bot_external_update_log.INFO: my new custom placeholder update', $file_update_contents);
}
}