{"id":5015,"date":"2013-05-05T00:58:41","date_gmt":"2013-05-04T15:58:41","guid":{"rendered":"http:\/\/qos.mine.nu\/wordpress\/?p=5015"},"modified":"2013-05-05T01:01:10","modified_gmt":"2013-05-04T16:01:10","slug":"log4perl%e3%81%a7%e3%82%b9%e3%83%ac%e3%83%83%e3%83%89id%e3%82%92%e5%87%ba%e5%8a%9b%e3%81%99%e3%82%8b","status":"publish","type":"post","link":"https:\/\/qos.dev7.net\/wordpress\/2013\/05\/log4perl%e3%81%a7%e3%82%b9%e3%83%ac%e3%83%83%e3%83%89id%e3%82%92%e5%87%ba%e5%8a%9b%e3%81%99%e3%82%8b.html","title":{"rendered":"Log4perl\u3067\u30b9\u30ec\u30c3\u30c9ID\u3092\u51fa\u529b\u3059\u308b"},"content":{"rendered":"<div id=\"wppda_alert\">\u3053\u306e\u8a18\u4e8b\u306f\uff12\u5e74\u4ee5\u4e0a\u524d\u306b\u66f8\u3044\u305f\u3082\u306e\u3067\u3059\u3002<br\/>\r\n\u305d\u306e\u305f\u3081\u60c5\u5831\u304c\u53e4\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3054\u4e86\u627f\u304f\u3060\u3055\u3044\u3002m(_ _)m<\/div><p>Log4perl\u3067\u30b9\u30ec\u30c3\u30c9ID\u3092\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u304c\u5206\u304b\u3089\u306a\u304b\u3063\u305f\u306e\u3067\u30b0\u30b0\u3063\u305f\u3068\u3053\u308d\u3001<br \/>\n\u4ee5\u4e0b\u306e\u9801\u304c\u53c2\u8003\u306b\u306a\u3063\u305f\u3002<\/p>\n<p>\u30fb<a href=\"http:\/\/www.perlmonks.org\/?node_id=1004100\">Log4perl log rotation in threadpool environment<\/a><br \/>\n\u30fb<a href=\"http:\/\/search.cpan.org\/~mschilli\/Log-Log4perl-1.41\/lib\/Log\/Log4perl\/MDC.pm\">Log::Log4perl::MDC &#8211; search.cpan.org<\/a><\/p>\n<pre><code class=\"language-perl\">\n#!\/usr\/bin\/perl\n\nuse strict;\nuse warnings;\n\nuse threads;\nuse Log::Log4perl qw(:easy);\nLog::Log4perl-&gt;easy_init({level =&gt; $INFO, layout =&gt; &quot;%d %02X{TID} %p %F{1} %L&gt; %m %n&quot;});\n\n# \u6a19\u6e96\u30a8\u30e9\u30fc\u306e\u30d0\u30c3\u30d5\u30a1\u30ea\u30f3\u30b0\u3092\u6b62\u3081\u308b\nuse IO::Handle;\nSTDERR-&gt;autoflush;\n\n# \u30e1\u30a4\u30f3\u30b9\u30ec\u30c3\u30c9\u30920\nLog::Log4perl::MDC-&gt;put(&quot;TID&quot;, &#039;0&#039;);\n\n\nmy ($thr1, $thr2, $thr3) = (0) x 3;\n$thr1 = threads-&gt;create(\\&amp;func);\nINFO &#039;threads create: tid=&#039;.$thr1-&gt;tid();\n\n$thr2 = threads-&gt;create(\\&amp;func);\nINFO &#039;threads create: tid=&#039;.$thr2-&gt;tid();\n\n$thr3 = threads-&gt;create(\\&amp;func);\nINFO &#039;threads create: tid=&#039;.$thr3-&gt;tid();\n\n$thr1-&gt;join();\n$thr2-&gt;join();\n$thr3-&gt;join();\n\nsub func{\n    Log::Log4perl::MDC-&gt;put(&quot;TID&quot;, threads-&gt;tid());\n\n    INFO &#039;start&#039;;\n\n    my $w = int(rand 10);\n    INFO &#039;wait: &#039; . $w;\n    sleep $w;\n\n    INFO &#039;end&#039;;\n    Log::Log4perl::MDC-&gt;remove();\n}\n<\/code><\/pre>\n<p>\u2191\u306e\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u5b9f\u884c\u3057\u305f\u5834\u5408\u3001\u2193\u306e\u3088\u3046\u306a\u51fa\u529b\u304c\u5f97\u3089\u308c\u308b\u3002<br \/>\n<code><br \/>\n% perl log_threads.pl<br \/>\n2013\/05\/05 00:20:02 01 INFO log_threads.pl 34&gt; start<br \/>\n2013\/05\/05 00:20:02 00 INFO log_threads.pl 19&gt; threads create: tid=1<br \/>\n2013\/05\/05 00:20:02 01 INFO log_threads.pl 37&gt; wait: 6<br \/>\n2013\/05\/05 00:20:03 00 INFO log_threads.pl 22&gt; threads create: tid=2<br \/>\n2013\/05\/05 00:20:03 02 INFO log_threads.pl 34&gt; start<br \/>\n2013\/05\/05 00:20:03 02 INFO log_threads.pl 37&gt; wait: 2<br \/>\n2013\/05\/05 00:20:03 00 INFO log_threads.pl 25&gt; threads create: tid=3<br \/>\n2013\/05\/05 00:20:03 03 INFO log_threads.pl 34&gt; start<br \/>\n2013\/05\/05 00:20:03 03 INFO log_threads.pl 37&gt; wait: 3<br \/>\n2013\/05\/05 00:20:05 02 INFO log_threads.pl 40&gt; end<br \/>\n2013\/05\/05 00:20:06 03 INFO log_threads.pl 40&gt; end<br \/>\n2013\/05\/05 00:20:08 01 INFO log_threads.pl 40&gt; end<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u8a18\u4e8b\u306f\uff12\u5e74\u4ee5\u4e0a\u524d\u306b\u66f8\u3044\u305f\u3082\u306e\u3067\u3059\u3002 \u305d\u306e\u305f\u3081\u60c5\u5831\u304c\u53e4\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3054\u4e86\u627f\u304f\u3060\u3055\u3044\u3002m(_ _)mLog4perl\u3067\u30b9\u30ec\u30c3\u30c9ID\u3092\u51fa\u529b\u3059\u308b\u65b9\u6cd5\u304c\u5206\u304b\u3089\u306a\u304b\u3063\u305f\u306e\u3067\u30b0\u30b0\u3063\u305f\u3068\u3053\u308d\u3001 \u4ee5\u4e0b\u306e\u9801\u304c\u53c2\u8003\u306b\u306a\u3063\u305f\u3002 \u30fbLo &hellip; <a href=\"https:\/\/qos.dev7.net\/wordpress\/2013\/05\/log4perl%e3%81%a7%e3%82%b9%e3%83%ac%e3%83%83%e3%83%89id%e3%82%92%e5%87%ba%e5%8a%9b%e3%81%99%e3%82%8b.html\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[126],"tags":[114],"class_list":["post-5015","post","type-post","status-publish","format-standard","hentry","category-afafaafaf","tag-perl"],"_links":{"self":[{"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/posts\/5015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/comments?post=5015"}],"version-history":[{"count":5,"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/posts\/5015\/revisions"}],"predecessor-version":[{"id":5020,"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/posts\/5015\/revisions\/5020"}],"wp:attachment":[{"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/media?parent=5015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/categories?post=5015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qos.dev7.net\/wordpress\/wp-json\/wp\/v2\/tags?post=5015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}