diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2014-11-01 01:47:12 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2014-11-01 01:47:12 +0000 |
commit | 94566f012421026c8311552f99175a5989eba063 (patch) | |
tree | 0bfd47111b94a1715d14b8c4ab2d82ad1abc09b1 /lib/Log/Log4perl/MDC.pm | |
download | Log-Log4perl-tarball-master.tar.gz |
Log-Log4perl-1.46HEADLog-Log4perl-1.46master
Diffstat (limited to 'lib/Log/Log4perl/MDC.pm')
-rw-r--r-- | lib/Log/Log4perl/MDC.pm | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/lib/Log/Log4perl/MDC.pm b/lib/Log/Log4perl/MDC.pm new file mode 100644 index 0000000..ea4d63a --- /dev/null +++ b/lib/Log/Log4perl/MDC.pm @@ -0,0 +1,136 @@ +################################################## +package Log::Log4perl::MDC; +################################################## + +use 5.006; +use strict; +use warnings; + +our %MDC_HASH = (); + +########################################### +sub get { +########################################### + my($class, $key) = @_; + + if($class ne __PACKAGE__) { + # Somebody called us with Log::Log4perl::MDC::get($key) + $key = $class; + } + + if(exists $MDC_HASH{$key}) { + return $MDC_HASH{$key}; + } else { + return undef; + } +} + +########################################### +sub put { +########################################### + my($class, $key, $value) = @_; + + if($class ne __PACKAGE__) { + # Somebody called us with Log::Log4perl::MDC::put($key, $value) + $value = $key; + $key = $class; + } + + $MDC_HASH{$key} = $value; +} + +########################################### +sub remove { +########################################### + %MDC_HASH = (); + + 1; +} + +########################################### +sub get_context { +########################################### + return \%MDC_HASH; +} + +1; + +__END__ + +=encoding utf8 + +=head1 NAME + +Log::Log4perl::MDC - Mapped Diagnostic Context + +=head1 DESCRIPTION + +Log::Log4perl allows loggers to maintain global thread-specific data, +called the Nested Diagnostic Context (NDC) and +Mapped Diagnostic Context (MDC). + +The MDC is a simple thread-specific hash table, in which the application +can stuff values under certain keys and retrieve them later +via the C<"%X{key}"> placeholder in +C<Log::Log4perl::Layout::PatternLayout>s. + +=over 4 + +=item Log::Log4perl::MDC->put($key, $value); + +Store a value C<$value> under key C<$key> in the map. + +=item my $value = Log::Log4perl::MDC->get($key); + +Retrieve the content of the map under the specified key. +Typically done by C<%X{key}> in +C<Log::Log4perl::Layout::PatternLayout>. +If no value exists to the given key, C<undef> is returned. + +=item my $text = Log::Log4perl::MDC->remove(); + +Delete all entries from the map. + +=item Log::Log4perl::MDC->get_context(); + +Returns a reference to the hash table. + +=back + +Please note that all of the methods above are class methods, there's no +instances of this class. Since the thread model in perl 5.8.0 is +"no shared data unless explicitly requested" the data structures +used are just global (and therefore thread-specific). + +=head1 LICENSE + +Copyright 2002-2013 by Mike Schilli E<lt>m@perlmeister.comE<gt> +and Kevin Goess E<lt>cpan@goess.orgE<gt>. + +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. + +=head1 AUTHOR + +Please contribute patches to the project on Github: + + http://github.com/mschilli/log4perl + +Send bug reports or requests for enhancements to the authors via our + +MAILING LIST (questions, bug reports, suggestions/patches): +log4perl-devel@lists.sourceforge.net + +Authors (please contact them via the list above, not directly): +Mike Schilli <m@perlmeister.com>, +Kevin Goess <cpan@goess.org> + +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. + |