で、tmon.out というファイルができます。整形して見るには dprofpp。% perl -d:DProf foo.pl
この結果(擬似)から、Foo::Process が実行時間の大部分を占めている% dprofpp Total Elapsed Time = 54.58411 Seconds User+System Time = 49.11048 Seconds Exclusive Times %Time ExclSec CumulS #Calls sec/call Csec/c Name 82.8 40.69 41.423 454 0.0896 0.0912 Foo::Process 8.95 4.393 3.399 102308 0.0000 0.0000 Bar::GetNext 3.79 1.862 4.889 544 0.0034 0.0090 Foo::Parse 2.22 1.090 1.823 454 0.0024 0.0040 Foo::GetContent 1.92 0.943 0.641 33853 0.0000 0.0000 Hoge::search 1.64 0.803 0.437 27471 0.0000 0.0000 Hoge::get 1.63 0.802 0.835 19114 0.0000 0.0000 Foo::get 1.40 0.687 0.357 33853 0.0000 0.0000 Hoge::find 1.25 0.615 0.736 14739 0.0000 0.0000 Foo::_get 1.14 0.562 49.770 454 0.0012 0.1096 Foo::Eat 0.89 0.437 0.169 27471 0.0000 0.0000 Hoge::_getline 0.83 0.406 0.402 454 0.0009 0.0009 Bar::Destroy 0.63 0.311 5.192 454 0.0007 0.0114 Foo::Parse2 0.24 0.117 0.113 454 0.0003 0.0002 main::output 0.21 0.101 0.097 454 0.0002 0.0002 Foo::lock_file
(低) DEBUG < INFO < WARN < ERROR < FATAL (高)例えば、DEBUG を指定すると全レベルのメッセージが出る。
実行結果:#!/usr/bin/perl use strict; use warnings; use Log::Log4perl qw(:easy); test($DEBUG); test($WARN); test($FATAL); sub test { my $level = shift; print "LEVEL = $level\n"; Log::Log4perl->easy_init({level => $level, layout => "%d %p> %F{1}:%L %M - %m%n"}); my $logger = get_logger(); $logger->debug("debug"); $logger->info("info"); $logger->warn("warn"); $logger->error("error"); $logger->fatal("fatal"); }
% ./log1.pl LEVEL = 10000 2006/11/06 22:53:41 DEBUG> log1.pl:16 main::test - debug 2006/11/06 22:53:41 INFO> log1.pl:17 main::test - info 2006/11/06 22:53:41 WARN> log1.pl:18 main::test - warn 2006/11/06 22:53:41 ERROR> log1.pl:19 main::test - error 2006/11/06 22:53:41 FATAL> log1.pl:20 main::test - fatal LEVEL = 30000 2006/11/06 22:53:41 WARN> log1.pl:18 main::test - warn 2006/11/06 22:53:41 ERROR> log1.pl:19 main::test - error 2006/11/06 22:53:41 FATAL> log1.pl:20 main::test - fatal LEVEL = 50000 2006/11/06 22:53:41 FATAL> log1.pl:20 main::test - fatal
などのファイル指定も可能。Log::Log4perl->easy_init({file => ":utf8> a.log", ... });
ITビジネス界の隠れたカリスマ橋本大也氏の人気ブログ「情報考学」のといった感じ。
書評を一冊にまとめた現代の知的参考書。