diff --git a/tests/Logger/AlertTest.php b/tests/Logger/AlertTest.php new file mode 100644 index 0000000..b8c3f04 --- /dev/null +++ b/tests/Logger/AlertTest.php @@ -0,0 +1,86 @@ +outputFileBaseName = '/tmp/alert-log-test.log'; + $this->outputFileName = '/tmp/alert-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + */ + public function outputAlertLog() + { + $exception = new \ErrorException('TestCritical', 500); + $context = [ + 'name' => 'keitakn', + 'email' => 'dummy@email.com', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $logger = $loggerBuilder->build(); + $logger->alert($exception, $context); + + $resultJson = file_get_contents($this->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' => 'ALERT', + 'message' => 'ErrorException', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 53, + 'context' => $context, + 'remote_ip_address' => '127.0.0.1', + 'user_agent' => 'unknown', + 'datetime' => $resultArray['datetime'], + 'timezone' => date_default_timezone_get(), + 'process_time' => $resultArray['process_time'], + 'errors' => [ + 'message' => 'TestCritical', + 'code' => 500, + 'file' => __FILE__, + 'line' => 44, + 'trace' => $resultArray['errors']['trace'], + ], + ]; + + $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/CriticalTest.php b/tests/Logger/CriticalTest.php new file mode 100644 index 0000000..664ba88 --- /dev/null +++ b/tests/Logger/CriticalTest.php @@ -0,0 +1,86 @@ +outputFileBaseName = '/tmp/critical-log-test.log'; + $this->outputFileName = '/tmp/critical-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + */ + public function outputCriticalLog() + { + $exception = new \ErrorException('TestCritical', 500); + $context = [ + 'name' => 'keitakn', + 'email' => 'dummy@email.com', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $logger = $loggerBuilder->build(); + $logger->critical($exception, $context); + + $resultJson = file_get_contents($this->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' => 'CRITICAL', + 'message' => 'ErrorException', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 53, + 'context' => $context, + 'remote_ip_address' => '127.0.0.1', + 'user_agent' => 'unknown', + 'datetime' => $resultArray['datetime'], + 'timezone' => date_default_timezone_get(), + 'process_time' => $resultArray['process_time'], + 'errors' => [ + 'message' => 'TestCritical', + 'code' => 500, + 'file' => __FILE__, + 'line' => 44, + 'trace' => $resultArray['errors']['trace'], + ], + ]; + + $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/DebugTest.php b/tests/Logger/DebugTest.php new file mode 100644 index 0000000..73b2ecf --- /dev/null +++ b/tests/Logger/DebugTest.php @@ -0,0 +1,78 @@ +outputFileBaseName = '/tmp/debug-log-test.log'; + $this->outputFileName = '/tmp/debug-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + */ + public function outputDebugLog() + { + $context = [ + 'title' => 'Test', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $loggerBuilder->setLogLevel(LoggerBuilder::DEBUG); + $logger = $loggerBuilder->build(); + $logger->debug('🐶', $context); + + $resultJson = file_get_contents($this->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' => 'DEBUG', + 'message' => '🐶', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 52, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/EmergencyTest.php b/tests/Logger/EmergencyTest.php new file mode 100644 index 0000000..f63ce7b --- /dev/null +++ b/tests/Logger/EmergencyTest.php @@ -0,0 +1,87 @@ +outputFileBaseName = '/tmp/emergency-log-test.log'; + $this->outputFileName = '/tmp/emergency-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + * @throws \Exception + */ + public function outputEmergencyLog() + { + $exception = new \ErrorException('TestEmergency', 500); + $context = [ + 'name' => 'keitakn', + 'email' => 'dummy@email.com', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $logger = $loggerBuilder->build(); + $logger->emergency($exception, $context); + + $resultJson = file_get_contents($this->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' => 'EMERGENCY', + 'message' => 'ErrorException', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 54, + 'context' => $context, + 'remote_ip_address' => '127.0.0.1', + 'user_agent' => 'unknown', + 'datetime' => $resultArray['datetime'], + 'timezone' => date_default_timezone_get(), + 'process_time' => $resultArray['process_time'], + 'errors' => [ + 'message' => 'TestEmergency', + 'code' => 500, + 'file' => __FILE__, + 'line' => 45, + 'trace' => $resultArray['errors']['trace'], + ], + ]; + + $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/ErrorTest.php b/tests/Logger/ErrorTest.php new file mode 100644 index 0000000..5954a0d --- /dev/null +++ b/tests/Logger/ErrorTest.php @@ -0,0 +1,86 @@ +outputFileBaseName = '/tmp/error-log-test.log'; + $this->outputFileName = '/tmp/error-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + */ + public function outputErrorLog() + { + $exception = new \Exception('TestException', 500); + $context = [ + 'name' => 'keitakn', + 'email' => 'dummy@email.com', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $logger = $loggerBuilder->build(); + $logger->error($exception, $context); + + $resultJson = file_get_contents($this->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' => 'ERROR', + 'message' => 'Exception', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 53, + 'context' => $context, + 'remote_ip_address' => '127.0.0.1', + 'user_agent' => 'unknown', + 'datetime' => $resultArray['datetime'], + 'timezone' => date_default_timezone_get(), + 'process_time' => $resultArray['process_time'], + 'errors' => [ + 'message' => 'TestException', + 'code' => 500, + 'file' => __FILE__, + 'line' => 44, + 'trace' => $resultArray['errors']['trace'], + ], + ]; + + $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/InfoTest.php b/tests/Logger/InfoTest.php new file mode 100644 index 0000000..a39d59f --- /dev/null +++ b/tests/Logger/InfoTest.php @@ -0,0 +1,83 @@ +outputFileBaseName = '/tmp/info-log-test.log'; + $this->outputFileName = '/tmp/info-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + */ + public function outputInfoLog() + { + $context = [ + 'title' => 'Test', + 'price' => 4000, + 'list' => [1, 2, 3], + 'user' => [ + 'id' => 100, + 'name' => 'keitakn', + ], + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $logger = $loggerBuilder->build(); + $logger->info('🐱', $context); + + $resultJson = file_get_contents($this->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' => '🐱', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 57, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/LoggerTest.php b/tests/Logger/LoggerTest.php new file mode 100644 index 0000000..94fb909 --- /dev/null +++ b/tests/Logger/LoggerTest.php @@ -0,0 +1,240 @@ +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', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 54, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $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', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 97, + 'context' => $context, + 'remote_ip_address' => $remoteIpAddress, + 'user_agent' => 'unknown', + 'datetime' => $resultArray['datetime'], + 'timezone' => date_default_timezone_get(), + 'process_time' => $resultArray['process_time'], + ]; + + $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); + $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', + 'trace_id' => 'MyTraceID', + 'file' => __FILE__, + 'line' => 138, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $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', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 186, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $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->getMonologInstance()->getName()); + $this->assertSame(500, $logger->getLogLevel()); + } +} diff --git a/tests/Logger/NoticeTest.php b/tests/Logger/NoticeTest.php new file mode 100644 index 0000000..660949f --- /dev/null +++ b/tests/Logger/NoticeTest.php @@ -0,0 +1,79 @@ +outputFileBaseName = '/tmp/notice-log-test.log'; + $this->outputFileName = '/tmp/notice-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + * @throws \Exception + */ + public function outputNoticeLog() + { + $context = [ + 'title' => 'Test', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $loggerBuilder->setLogLevel(LoggerBuilder::DEBUG); + $logger = $loggerBuilder->build(); + $logger->notice('🐶', $context); + + $resultJson = file_get_contents($this->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' => 'NOTICE', + 'message' => '🐶', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 53, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/Logger/WarningTest.php b/tests/Logger/WarningTest.php new file mode 100644 index 0000000..cadd042 --- /dev/null +++ b/tests/Logger/WarningTest.php @@ -0,0 +1,79 @@ +outputFileBaseName = '/tmp/warning-log-test.log'; + $this->outputFileName = '/tmp/warning-log-test-' . date('Y-m-d') . '.log'; + + if (file_exists($this->outputFileName)) { + unlink($this->outputFileName); + } + } + + /** + * @test + * @throws \Exception + */ + public function outputWarningLog() + { + $context = [ + 'title' => 'Test', + ]; + + $loggerBuilder = new LoggerBuilder(); + $loggerBuilder->setFileName($this->outputFileBaseName); + $loggerBuilder->setLogLevel(LoggerBuilder::DEBUG); + $logger = $loggerBuilder->build(); + $logger->warning('🐶', $context); + + $resultJson = file_get_contents($this->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' => 'WARNING', + 'message' => '🐶', + 'trace_id' => $logger->getTraceId(), + 'file' => __FILE__, + 'line' => 53, + 'context' => $context, + 'remote_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->getMonologInstance()->getName()); + $this->assertSame($expectedLog, $resultArray); + } +} diff --git a/tests/LoggerTest.php b/tests/LoggerTest.php deleted file mode 100644 index ee7303c..0000000 --- a/tests/LoggerTest.php +++ /dev/null @@ -1,580 +0,0 @@ - 'Test', - 'price' => 4000, - 'list' => [1, 2, 3], - 'user' => [ - 'id' => 100, - 'name' => 'keitakn', - ], - ]; - - $loggerBuilder = new LoggerBuilder(); - $logger = $loggerBuilder->build(); - $logger->info('🐱', $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => '🐱', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 42, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - */ - public function outputErrorLog() - { - $exception = new \Exception('TestException', 500); - $context = [ - 'name' => 'keitakn', - 'email' => 'dummy@email.com', - ]; - - $loggerBuilder = new LoggerBuilder(); - $logger = $loggerBuilder->build(); - $logger->error($exception, $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'Exception', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 82, - 'context' => $context, - 'remote_ip_address' => '127.0.0.1', - 'user_agent' => 'unknown', - 'datetime' => $resultArray['datetime'], - 'timezone' => date_default_timezone_get(), - 'process_time' => $resultArray['process_time'], - 'errors' => [ - 'message' => 'TestException', - 'code' => 500, - 'file' => __FILE__, - 'line' => 74, - 'trace' => $resultArray['errors']['trace'], - ], - ]; - - $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @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('/tmp/php-json-logger-' . 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' => 'testOutputUserAgent', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 130, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $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('/tmp/php-json-logger-' . 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' => 'testOutputRemoteIpAddress', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 173, - 'context' => $context, - 'remote_ip_address' => $remoteIpAddress, - 'user_agent' => 'unknown', - 'datetime' => $resultArray['datetime'], - 'timezone' => date_default_timezone_get(), - 'process_time' => $resultArray['process_time'], - ]; - - $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); - $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('/tmp/php-json-logger-' . 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' => 'testSetTraceIdIsOutput', - 'trace_id' => 'MyTraceID', - 'file' => __FILE__, - 'line' => 214, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $this->assertSame('MyTraceID', $logger->getTraceId()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - * @throws \Exception - */ - public function setLogFileName() - { - $fileName = '/tmp/test-php-json-logger.log'; - $outputLogFile = '/tmp/test-php-json-logger-' . date('Y-m-d') . '.log'; - if (file_exists($outputLogFile)) { - unlink($outputLogFile); - } - - $context = [ - 'cat' => '🐱', - 'dog' => '🐶', - 'rabbit' => '🐰', - ]; - - $loggerBuilder = new LoggerBuilder(); - $loggerBuilder->setFileName($fileName); - $logger = $loggerBuilder->build(); - $logger->info('testSetLogFileName', $context); - - $resultJson = file_get_contents($outputLogFile); - $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', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 263, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $this->assertSame( - $fileName, - $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('/tmp/php-json-logger-' . date('Y-m-d') . '.log') - ); - - $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); - $this->assertSame(500, $logger->getLogLevel()); - } - - /** - * @test - */ - public function outputDebugLog() - { - $context = [ - 'title' => 'Test', - ]; - - $loggerBuilder = new LoggerBuilder(); - $loggerBuilder->setLogLevel(LoggerBuilder::DEBUG); - $logger = $loggerBuilder->build(); - $logger->debug('🐶', $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'DEBUG', - 'message' => '🐶', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 330, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - * @throws \Exception - */ - public function outputNoticeLog() - { - $context = [ - 'title' => 'Test', - ]; - - $loggerBuilder = new LoggerBuilder(); - $loggerBuilder->setLogLevel(LoggerBuilder::DEBUG); - $logger = $loggerBuilder->build(); - $logger->notice('🐶', $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'NOTICE', - 'message' => '🐶', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 370, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - * @throws \Exception - */ - public function outputWarningLog() - { - $context = [ - 'title' => 'Test', - ]; - - $loggerBuilder = new LoggerBuilder(); - $loggerBuilder->setLogLevel(LoggerBuilder::DEBUG); - $logger = $loggerBuilder->build(); - $logger->warning('🐶', $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'WARNING', - 'message' => '🐶', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 410, - 'context' => $context, - 'remote_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->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - * @throws \Exception - */ - public function outputCriticalLog() - { - $exception = new \ErrorException('TestCritical', 500); - $context = [ - 'name' => 'keitakn', - 'email' => 'dummy@email.com', - ]; - - $loggerBuilder = new LoggerBuilder(); - $logger = $loggerBuilder->build(); - $logger->critical($exception, $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'CRITICAL', - 'message' => 'ErrorException', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 451, - 'context' => $context, - 'remote_ip_address' => '127.0.0.1', - 'user_agent' => 'unknown', - 'datetime' => $resultArray['datetime'], - 'timezone' => date_default_timezone_get(), - 'process_time' => $resultArray['process_time'], - 'errors' => [ - 'message' => 'TestCritical', - 'code' => 500, - 'file' => __FILE__, - 'line' => 443, - 'trace' => $resultArray['errors']['trace'], - ], - ]; - - $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - * @throws \Exception - */ - public function outputAlertLog() - { - $exception = new \ErrorException('TestCritical', 500); - $context = [ - 'name' => 'keitakn', - 'email' => 'dummy@email.com', - ]; - - $loggerBuilder = new LoggerBuilder(); - $logger = $loggerBuilder->build(); - $logger->alert($exception, $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'ALERT', - 'message' => 'ErrorException', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 499, - 'context' => $context, - 'remote_ip_address' => '127.0.0.1', - 'user_agent' => 'unknown', - 'datetime' => $resultArray['datetime'], - 'timezone' => date_default_timezone_get(), - 'process_time' => $resultArray['process_time'], - 'errors' => [ - 'message' => 'TestCritical', - 'code' => 500, - 'file' => __FILE__, - 'line' => 491, - 'trace' => $resultArray['errors']['trace'], - ], - ]; - - $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } - - /** - * @test - * @throws \Exception - */ - public function outputEmergencyLog() - { - $exception = new \ErrorException('TestCritical', 500); - $context = [ - 'name' => 'keitakn', - 'email' => 'dummy@email.com', - ]; - - $loggerBuilder = new LoggerBuilder(); - $logger = $loggerBuilder->build(); - $logger->emergency($exception, $context); - - $resultJson = file_get_contents('/tmp/php-json-logger-' . 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' => 'EMERGENCY', - 'message' => 'ErrorException', - 'trace_id' => $logger->getTraceId(), - 'file' => __FILE__, - 'line' => 547, - 'context' => $context, - 'remote_ip_address' => '127.0.0.1', - 'user_agent' => 'unknown', - 'datetime' => $resultArray['datetime'], - 'timezone' => date_default_timezone_get(), - 'process_time' => $resultArray['process_time'], - 'errors' => [ - 'message' => 'TestCritical', - 'code' => 500, - 'file' => __FILE__, - 'line' => 539, - 'trace' => $resultArray['errors']['trace'], - ], - ]; - - $this->assertSame('PhpJsonLogger', $logger->getMonologInstance()->getName()); - $this->assertSame($expectedLog, $resultArray); - } -}