Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

set Data::MessagePack->utf8(1) by default. #33

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 1 commit into from
Aug 16, 2024
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
1 change: 1 addition & 0 deletions 1 README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Fluent::Logger is a structured event logger for Fluentd.
timeout => 'Num': default is 3.0
socket => 'Str': default undef (e.g. "/var/run/fluent/fluent.sock")
prefer_integer => 'Bool': default 1 (set to Data::MessagePack->prefer_integer)
utf8 => 'Bool': default 1 (set to Data::MessagePack->utf8)
event_time => 'Bool': default 0 (timestamp includes nanoseconds, supported by fluentd >= 0.14.0)
buffer_limit => 'Int': defualt 8388608 (8MB)
buffer_overflow_handler => 'Code': optional
Expand Down
3 changes: 3 additions & 0 deletions 3 lib/Fluent/Logger.pm
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,11 @@ use Class::Tiny +{
socket_io => sub {},
errors => sub { [] },
prefer_integer => sub { 1 },
utf8 => sub { 1 },
packer => sub {
my $self = shift;
my $mp = Data::MessagePack->new;
$mp->utf8( $self->utf8 );
$mp->prefer_integer( $self->prefer_integer );
$mp;
},
Expand Down Expand Up @@ -402,6 +404,7 @@ create new logger instance.
timeout => 'Num': default is 3.0
socket => 'Str': default undef (e.g. "/var/run/fluent/fluent.sock")
prefer_integer => 'Bool': default 1 (set to Data::MessagePack->prefer_integer)
utf8 => 'Bool': default 1 (set to Data::MessagePack->utf8)
event_time => 'Bool': default 0 (timestamp includes nanoseconds, supported by fluentd >= 0.14.0)
buffer_limit => 'Int': defualt 8388608 (8MB)
buffer_overflow_handler => 'Code': optional
Expand Down
5 changes: 4 additions & 1 deletion 5 t/07_str_bin.t
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,20 @@ my $port = $server->port;
use_ok "Fluent::Logger";

subtest str_bin => sub {
my $logger = Fluent::Logger->new( port => $port );
my $logger = Fluent::Logger->new( port => $port, utf8 => 0 );

isa_ok $logger, "Fluent::Logger";
is $logger->packer->get_utf8, 0, "packer utf8 is off";
my $tag = "test.tcp";
ok $logger->post( $tag, { "foo" => decode_utf8("内部文字列") }), "post str ok";
ok $logger->post( $tag, { "bar" => "バイナリ列" }), "post bin ok";
ok $logger->post( $tag, { "broken" => "\xE0\x80\xAF" }), "post broken utf8 ok";
sleep 1;
my $log = slurp_log $dir;
note $log;
like $log => qr/"foo":"内部文字列","tag":"$tag"/, "match post str log";
like $log => qr/"bar":"バイナリ列","tag":"$tag"/, "match post bin log";
like $log => qr/"broken":"\xE0\x80\xAF","tag":"$tag"/, "match post broken utf8 log";
};

done_testing;
40 changes: 40 additions & 0 deletions 40 t/07_str_utf8.t
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use strict;
use warnings;
use FindBin;
use lib "$FindBin::Bin/../";
use Test::More;
use Test::TCP;
use Time::Piece;
use Encode;
use t::Util qw/ run_fluentd slurp_log /;
use POSIX qw/ setlocale LC_ALL /;
use Capture::Tiny qw/ capture /;

use Config;
if ( $Config{d_setlocale} ) {
setlocale(LC_ALL, "C");
}

my ($server, $dir) = run_fluentd();
my $port = $server->port;

use_ok "Fluent::Logger";

subtest str_bin => sub {
my $logger = Fluent::Logger->new( port => $port, utf8 => 1 );

isa_ok $logger, "Fluent::Logger";
is $logger->packer->get_utf8, 1, "packer utf8 is on";
my $tag = "test.tcp";
ok $logger->post( $tag, { "foo" => decode_utf8("内部文字列") }), "post str ok";
ok $logger->post( $tag, { "bar" => "バイナリ列" }), "post bin ok";
ok $logger->post( $tag, { "broken" => "\xE0\x80\xAF" }), "post broken utf8 ok";
sleep 1;
my $log = slurp_log $dir;
note $log;
like $log => qr/"foo":"内部文字列","tag":"$tag"/, "match post str log";
like $log => qr/"bar":"バイナリ列","tag":"$tag"/, "match post bin log";
like $log => qr/"broken":"\xE0\x80\xAF","tag":"$tag"/, "match post broken utf8 log";
};

done_testing;
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.