| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- <?php
- namespace Nekonomokochan\Tests;
- use Monolog\Handler\RotatingFileHandler;
- use Monolog\Logger;
- use Monolog\Processor\IntrospectionProcessor;
- use Nekonomokochan\PhpJsonLogger\ErrorsContextFormatter;
- use Nekonomokochan\PhpJsonLogger\JsonFormatter;
- use PHPUnit\Framework\TestCase;
- /**
- * Class ExtendedMonologTest
- *
- * @package Nekonomokochan\Tests
- */
- class ExtendedMonologTest extends TestCase
- {
- use ErrorsContextFormatter;
- /**
- * @var string
- */
- private $logFileName = '/tmp/extended-monolog-test.log';
- /**
- * @var Logger
- */
- private $extendedMonolog;
- /**
- * create extendedMonolog Instance
- *
- * @throws \Exception
- */
- public function setUp()
- {
- parent::setUp();
- // Delete the log file to assert the log file
- $defaultFile = '/tmp/extended-monolog-test-' . date('Y-m-d') . '.log';
- if (file_exists($defaultFile)) {
- unlink($defaultFile);
- }
- // create extendedMonolog Instance
- $formatter = new JsonFormatter();
- $rotating = new RotatingFileHandler(
- $this->logFileName,
- 7,
- Logger::INFO
- );
- $rotating->setFormatter($formatter);
- $introspection = new IntrospectionProcessor(
- Logger::INFO,
- ['Nekonomokochan\\PhpJsonLogger\\'],
- 0
- );
- $extraRecords = function ($record) {
- $record['extra']['trace_id'] = 'ExtendedMonologTestTraceId';
- $record['extra']['created_time'] = microtime(true);
- return $record;
- };
- $this->extendedMonolog = new Logger(
- 'ExtendedMonolog',
- [$rotating],
- [$introspection, $extraRecords]
- );
- }
- /**
- * @test
- */
- public function outputInfoLog()
- {
- $context = [
- 'cat' => '🐱',
- 'dog' => '🐶',
- 'rabbit' => '🐰',
- ];
- $this->extendedMonolog->info('outputInfoLogTest', $context);
- $resultJson = file_get_contents('/tmp/extended-monolog-test-' . date('Y-m-d') . '.log');
- $resultArray = json_decode($resultJson, true);
- echo "\n ---- Output Log Begin ---- \n";
- echo json_encode($resultArray, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
- echo "\n ---- Output Log End ---- \n";
- $expectedLog = [
- 'log_level' => 'INFO',
- 'message' => 'outputInfoLogTest',
- 'channel' => 'ExtendedMonolog',
- 'trace_id' => 'ExtendedMonologTestTraceId',
- 'file' => __FILE__,
- 'line' => 85,
- 'context' => $context,
- 'remote_ip_address' => '127.0.0.1',
- 'server_ip_address' => '127.0.0.1',
- 'user_agent' => 'unknown',
- 'datetime' => $resultArray['datetime'],
- 'timezone' => date_default_timezone_get(),
- 'process_time' => $resultArray['process_time'],
- ];
- $this->assertSame('ExtendedMonolog', $this->extendedMonolog->getName());
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function outputErrorLog()
- {
- $exception = new \Exception('ExtendedMonologTest.outputErrorLog', 500);
- $context = [
- 'cat' => '🐱(=^・^=)🐱',
- 'dog' => '🐶Uo・ェ・oU🐶',
- 'rabbit' => '🐰🐰🐰',
- ];
- $this->extendedMonolog->error(
- get_class($exception),
- $this->formatPhpJsonLoggerErrorsContext($exception, $context)
- );
- $resultJson = file_get_contents('/tmp/extended-monolog-test-' . date('Y-m-d') . '.log');
- $resultArray = json_decode($resultJson, true);
- echo "\n ---- Output Log Begin ---- \n";
- echo json_encode($resultArray, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
- echo "\n ---- Output Log End ---- \n";
- $expectedLog = [
- 'log_level' => 'ERROR',
- 'message' => get_class($exception),
- 'channel' => 'ExtendedMonolog',
- 'trace_id' => 'ExtendedMonologTestTraceId',
- 'file' => __FILE__,
- 'line' => 128,
- 'context' => $context,
- 'remote_ip_address' => '127.0.0.1',
- 'server_ip_address' => '127.0.0.1',
- 'user_agent' => 'unknown',
- 'datetime' => $resultArray['datetime'],
- 'timezone' => date_default_timezone_get(),
- 'process_time' => $resultArray['process_time'],
- 'errors' => [
- 'message' => $exception->getMessage(),
- 'code' => $exception->getCode(),
- 'file' => $exception->getFile(),
- 'line' => $exception->getLine(),
- 'trace' => $resultArray['errors']['trace'],
- ],
- ];
- $this->assertSame('ExtendedMonolog', $this->extendedMonolog->getName());
- $this->assertSame($expectedLog, $resultArray);
- }
- }
|