日本語でも書く
Plack::Middleware::AxsLog バージョン 0.10 をリリースしました。
cpan: https://metacpan.org/release/Plack-Middleware-AxsLog
今までのバージョンでは、combined、common、ltsvの3つのログフォーマットしか使えなかったんだけど、新しいバージョンで任意のフォーマットが使えるようになりました。
AxsLogがPM::AccessLogに比べて速いのは、ログ文字列の生成を正規表現ではなく、単純な文字列連結でやっていたためで、その代わりにフォーマットを自由に変更できない制限がありました。
けど、このバージョンから Apache::LogFormat::Compiler を使っているので、速度を犠牲にすることなくフォーマットの変更が可能となりましたぞよ。
使い方
use Plack::Builder;
builder {
enable 'AxsLog',
format => '%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" %D',
response_time => 1,
error_only => 1,
$app
};
ちなみにマイクロベンチマークの結果。AccessLogよりも5倍程度高速
Benchmark: running axslog, axslog_format, error_only_axslog, log, nolog for at least 3 CPU seconds...
axslog: 3 wallclock secs ( 3.15 usr + 0.01 sys = 3.16 CPU) @ 15955.70/s (n=50420)
axslog_format: 3 wallclock secs ( 3.19 usr + 0.01 sys = 3.20 CPU) @ 16036.25/s (n=51316)
error_only_axslog: 4 wallclock secs ( 3.14 usr + 0.01 sys = 3.15 CPU) @ 42440.32/s (n=133687)
log: 3 wallclock secs ( 3.18 usr + 0.01 sys = 3.19 CPU) @ 3216.61/s (n=10261)
nolog: 4 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 432826.20/s (n=1354746)
Rate log axslog axslog_format error_only_axslog nolog
log 3217/s -- -80% -80% -92% -99%
axslog 15956/s 396% -- -1% -62% -96%
axslog_format 16036/s 399% 1% -- -62% -96%
error_only_axslog 42440/s 1219% 166% 165% -- -90%
nolog 432826/s 13356% 2613% 2599% 920% --
scriptはこれ https://github.com/kazeburo/Plack-Middleware-AxsLog/blob/master/logbench.pl