| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381 |
- <?php
- namespace Nekonomokochan\Tests\Logger;
- use Nekonomokochan\PhpJsonLogger\LoggerBuilder;
- use PHPUnit\Framework\TestCase;
- /**
- * Class PhpJsonLoggerTest
- *
- * Add common test code to this class for all log methods
- *
- * @package Nekonomokochan\Tests
- */
- class LoggerTest extends TestCase
- {
- /**
- * @var string
- */
- private $defaultOutputFileBaseName;
- /**
- * @var string
- */
- private $defaultOutputFileName;
- /**
- * Delete the log file used last time to test the contents of the log file
- */
- public function setUp()
- {
- parent::setUp();
- $this->defaultOutputFileBaseName = '/tmp/php-json-logger.log';
- $this->defaultOutputFileName = '/tmp/php-json-logger-' . date('Y-m-d') . '.log';
- if (file_exists($this->defaultOutputFileName)) {
- unlink($this->defaultOutputFileName);
- }
- }
- /**
- * @test
- */
- public function outputUserAgent()
- {
- $userAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36';
- $_SERVER['HTTP_USER_AGENT'] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36';
- $context = [
- 'name' => 'keitakn',
- ];
- $loggerBuilder = new LoggerBuilder();
- $logger = $loggerBuilder->build();
- $logger->info('testOutputUserAgent', $context);
- unset($_SERVER['HTTP_USER_AGENT']);
- $resultJson = file_get_contents($this->defaultOutputFileName);
- $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' => 'testOutputUserAgent',
- 'channel' => 'PhpJsonLogger',
- 'trace_id' => $logger->getTraceId(),
- 'file' => __FILE__,
- 'line' => 54,
- 'context' => $context,
- 'remote_ip_address' => '127.0.0.1',
- 'server_ip_address' => '127.0.0.1',
- 'user_agent' => $userAgent,
- 'datetime' => $resultArray['datetime'],
- 'timezone' => date_default_timezone_get(),
- 'process_time' => $resultArray['process_time'],
- ];
- $this->assertSame('PhpJsonLogger', $logger->getChannel());
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function outputRemoteIpAddress()
- {
- $remoteIpAddress = '192.168.10.20';
- $_SERVER['REMOTE_ADDR'] = $remoteIpAddress;
- $context = [
- 'name' => 'keitakn',
- ];
- $loggerBuilder = new LoggerBuilder();
- $logger = $loggerBuilder->build();
- $logger->info('testOutputRemoteIpAddress', $context);
- unset($_SERVER['REMOTE_ADDR']);
- $resultJson = file_get_contents($this->defaultOutputFileName);
- $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' => 'testOutputRemoteIpAddress',
- 'channel' => 'PhpJsonLogger',
- 'trace_id' => $logger->getTraceId(),
- 'file' => __FILE__,
- 'line' => 99,
- 'context' => $context,
- 'remote_ip_address' => $remoteIpAddress,
- '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('PhpJsonLogger', $logger->getChannel());
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function setTraceIdIsOutput()
- {
- $context = [
- 'name' => 'keitakn',
- ];
- $loggerBuilder = new LoggerBuilder();
- $loggerBuilder->setTraceId('MyTraceID');
- $logger = $loggerBuilder->build();
- $logger->info('testSetTraceIdIsOutput', $context);
- $resultJson = file_get_contents($this->defaultOutputFileName);
- $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' => 'testSetTraceIdIsOutput',
- 'channel' => 'PhpJsonLogger',
- 'trace_id' => 'MyTraceID',
- 'file' => __FILE__,
- 'line' => 142,
- '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('PhpJsonLogger', $logger->getChannel());
- $this->assertSame('MyTraceID', $logger->getTraceId());
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function setLogFileName()
- {
- $outputFileBaseName = '/tmp/test-php-json-logger.log';
- $outputFileName = '/tmp/test-php-json-logger-' . date('Y-m-d') . '.log';
- if (file_exists($outputFileName)) {
- unlink($outputFileName);
- }
- $context = [
- 'cat' => '🐱',
- 'dog' => '🐶',
- 'rabbit' => '🐰',
- ];
- $loggerBuilder = new LoggerBuilder();
- $loggerBuilder->setFileName($outputFileBaseName);
- $logger = $loggerBuilder->build();
- $logger->info('testSetLogFileName', $context);
- $resultJson = file_get_contents($outputFileName);
- $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' => 'testSetLogFileName',
- 'channel' => 'PhpJsonLogger',
- 'trace_id' => $logger->getTraceId(),
- 'file' => __FILE__,
- 'line' => 192,
- '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('PhpJsonLogger', $logger->getChannel());
- $this->assertSame(
- $outputFileBaseName,
- $logger->getLogFileName()
- );
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function setLogLevel()
- {
- $context = [
- 'cat' => '🐱',
- 'dog' => '🐶',
- 'rabbit' => '🐰',
- ];
- $loggerBuilder = new LoggerBuilder();
- $loggerBuilder->setLogLevel(LoggerBuilder::CRITICAL);
- $logger = $loggerBuilder->build();
- $logger->info('testSetLogLevel', $context);
- $this->assertFalse(
- file_exists($this->defaultOutputFileName)
- );
- $this->assertSame('PhpJsonLogger', $logger->getChannel());
- $this->assertSame(500, $logger->getLogLevel());
- }
- /**
- * @test
- */
- public function outputHttpXForwardedFor()
- {
- $_SERVER['HTTP_X_FORWARDED_FOR'] = '10.0.0.0,10.1.1.1';
- $_SERVER['REMOTE_ADDR'] = '192.168.10.20';
- $expectedRemoteIpAddress = '10.0.0.0';
- $context = [
- 'name' => 'keitakn',
- ];
- $loggerBuilder = new LoggerBuilder();
- $logger = $loggerBuilder->build();
- $logger->info('testOutputHttpXForwardedFor', $context);
- unset($_SERVER['REMOTE_ADDR']);
- unset($_SERVER['HTTP_X_FORWARDED_FOR']);
- $resultJson = file_get_contents($this->defaultOutputFileName);
- $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' => 'testOutputHttpXForwardedFor',
- 'channel' => 'PhpJsonLogger',
- 'trace_id' => $logger->getTraceId(),
- 'file' => __FILE__,
- 'line' => 265,
- 'context' => $context,
- 'remote_ip_address' => $expectedRemoteIpAddress,
- '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('PhpJsonLogger', $logger->getChannel());
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function canSetMaxFiles()
- {
- $context = [
- 'name' => 'keitakn',
- ];
- $loggerBuilder = new LoggerBuilder();
- $loggerBuilder->setMaxFiles(2);
- $logger = $loggerBuilder->build();
- $logger->info('testCanSetMaxFiles', $context);
- $resultJson = file_get_contents($this->defaultOutputFileName);
- $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' => 'testCanSetMaxFiles',
- 'channel' => 'PhpJsonLogger',
- 'trace_id' => $logger->getTraceId(),
- 'file' => __FILE__,
- 'line' => 309,
- '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('PhpJsonLogger', $logger->getChannel());
- $this->assertSame(2, $logger->getMaxFiles());
- $this->assertSame($expectedLog, $resultArray);
- }
- /**
- * @test
- */
- public function canSetChannel()
- {
- $context = [
- 'animals' => '🐱🐶🐰🐱🐹',
- ];
- $expectedChannel = 'My Favorite Animals';
- $loggerBuilder = new LoggerBuilder();
- $loggerBuilder->setChannel($expectedChannel);
- $logger = $loggerBuilder->build();
- $logger->info('testCanSetChannel', $context);
- $resultJson = file_get_contents($this->defaultOutputFileName);
- $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' => 'testCanSetChannel',
- 'channel' => $expectedChannel,
- 'trace_id' => $logger->getTraceId(),
- 'file' => __FILE__,
- 'line' => 353,
- '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($expectedChannel, $logger->getChannel());
- $this->assertSame($expectedLog, $resultArray);
- }
- }
|