2
Log4perl으로 % T 형식 문자열을 사용하여 전체 스택 추적을 포함 할 수 있음을 알고 있습니다.Log4perl을 사용하여 부분 스택 추적을 인쇄하는 방법은 무엇입니까?
부분 스택 추적을 인쇄하는 방법이 있습니까? 첫 N 레벨?
Log4perl으로 % T 형식 문자열을 사용하여 전체 스택 추적을 포함 할 수 있음을 알고 있습니다.Log4perl을 사용하여 부분 스택 추적을 인쇄하는 방법은 무엇입니까?
부분 스택 추적을 인쇄하는 방법이 있습니까? 첫 N 레벨?
당신은 Log::Log4perl::Layout::PatternLayout::Stacktrace 사용할 수 있습니다
이use strict;
use warnings 'all';
use Log::Log4perl::Layout::PatternLayout::Stacktrace;
sub foo { bar() }
sub bar { baz() }
sub baz { Log::Log4perl->get_logger->warn('baz') }
$ENV{L4P_STACKTRACE_MAX} = 3; # max number of stack frames to show
Log::Log4perl->init('log4perl.conf');
foo();
이것은 당신이 당신의 패턴으로 %S
형식 지정자를 사용할 수 있습니다 :
log4perl.rootLogger=DEBUG, SCREEN
log4perl.appender.SCREEN=Log::Log4perl::Appender::Screen
log4perl.appender.SCREEN.layout=PatternLayout
log4perl.appender.SCREEN.layout.ConversionPattern=%S
출력 :
==== START STACK TRACE ===
[1] at ./foo line 10
__ANON__ (Log::Log4perl::Logger=HASH(0x1a41a68), "baz")
[2] at ./foo line 9
baz()
[3] at ./foo line 8
bar()
... 1 frames cut off
=== END STACK TRACE ===
얻으려면 더 %T
생성 무엇 같은 것이, %S
에 매개 변수로 사용자 정의 형식을 전달합니다 (로그 :: Log4perl 1.20 이상이 필요) :
log4perl.appender.SCREEN.layout.ConversionPattern= \
%S{%s called at %f line %l%[nr!L4P_STACKTRACE_MAX,s=]b}
이 지원되는 형식 지정자에 대한
Stacktrace::Configurable에 대한 설명서를 참조하십시오.
출력 :
Log::Log4perl::Logger::__ANON__ called at ./foo line 10
main::baz called at ./foo line 9
main::bar called at ./foo line 8