format( $record ), true ); foreach ( $expected as $key => $value ) { $this->assertArrayHasKey( $key, $formatted ); $this->assertSame( $value, $formatted[$key] ); } foreach ( $notExpected as $key ) { $this->assertArrayNotHasKey( $key, $formatted ); } } public function provideV1() { return [ [ [ 'extra' => [ 'foo' => 1 ], 'context' => [ 'bar' => 2 ] ], [ 'foo' => 1, 'bar' => 2 ], [ 'logstash_formatter_key_conflict' ], ], [ [ 'extra' => [ 'url' => 1 ], 'context' => [ 'url' => 2 ] ], [ 'url' => 1, 'c_url' => 2, 'logstash_formatter_key_conflict' => [ 'url' ] ], [], ], [ [ 'channel' => 'x', 'context' => [ 'channel' => 'y' ] ], [ 'channel' => 'x', 'c_channel' => 'y', 'logstash_formatter_key_conflict' => [ 'channel' ] ], [], ], ]; } public function testV1WithPrefix() { $formatter = new LogstashFormatter( 'app', 'system', null, 'ctx_', LogstashFormatter::V1 ); $record = [ 'extra' => [ 'url' => 1 ], 'context' => [ 'url' => 2 ] ]; $formatted = json_decode( $formatter->format( $record ), true ); $this->assertArrayHasKey( 'url', $formatted ); $this->assertSame( 1, $formatted['url'] ); $this->assertArrayHasKey( 'ctx_url', $formatted ); $this->assertSame( 2, $formatted['ctx_url'] ); $this->assertArrayNotHasKey( 'c_url', $formatted ); } }