Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
NDC(3)		      User Contributed Perl Documentation		NDC(3)

       Log::Log4perl::NDC - Nested Diagnostic Context

       Log::Log4perl allows loggers to maintain	global thread-specific data,
       called the Nested Diagnostic Context (NDC).

       At some point, the application might decide to push a piece of data
       onto the	NDC stack, which other parts of	the application	might want to
       reuse. For example, at the beginning of a web request in	a server, the
       application might decide	to push	the IP address of the client onto the
       stack to	provide	it for other loggers down the road without having to
       pass the	data from function to function.

       The Log::Log4perl::Layout::PatternLayout	class even provides the	handy
       %x placeholder which is replaced	by the blank-separated list of
       elements	currently on the stack.

       This module maintains a simple stack which you can push data on to,
       query what's on top, pop	it off again or	delete the entire stack.

       Its purpose is to provide a thread-specific context which all
       Log::Log4perl loggers can refer to without the application having to
       pass around the context data between its	functions.

       Since in	5.8.0 perl's threads don't share data only upon	request,
       global data is by definition thread-specific.

	   Push	an item	onto the stack.	If the stack grows beyond the defined
	   limit ($Log::Log4perl::NDC::MAX_SIZE), just the topmost element
	   will	be replated.

	   This	is typically done when a context is entered.

	   Discard the upmost element of the stack. This is typically done
	   when	a context is left.

       my $text	= Log::Log4perl::NDC->get();
	   Retrieve the	content	of the stack as	a string of blank-separated
	   values without disrupting the stack structure. Typically done by
	   %x.	If the stack is	empty the value	"[undef]" is being returned.

	   Reset the stack, remove all items.

       Please note that	all of the methods above are class methods, there's no
       instances of this class.

       Copyright 2002-2013 by Mike Schilli <> and Kevin Goess

       This library is free software; you can redistribute it and/or modify it
       under the same terms as Perl itself.

       Please contribute patches to the	project	on Github:

       Send bug	reports	or requests for	enhancements to	the authors via	our

       MAILING LIST (questions,	bug reports, suggestions/patches):

       Authors (please contact them via	the list above,	not directly): Mike
       Schilli <>, Kevin Goess	<>

       Contributors (in	alphabetical order): Ateeq Altaf, Cory Bennett,	Jens
       Berthold, Jeremy	Bopp, Hutton Davidson, Chris R.	Donnelly, Matisse
       Enzer, Hugh Esco, Anthony Foiani, James FitzGibbon, Carl	Franks,	Dennis
       Gregorovic, Andy	Grundman, Paul Harrington, Alexander Hartmaier	David
       Hull, Robert Jacobson, Jason Kohles, Jeff Macdonald, Markus Peter,
       Brett Rann, Peter Rabbitson, Erik Selberg, Aaron	Straup Cope, Lars
       Thegler,	David Viner, Mac Yang.

perl v5.24.1			  2017-02-21				NDC(3)


Want to link to this manual page? Use this URL:

home | help