1 package Log::Contextual;
6 our $VERSION = '1.000';
9 use Data::Dumper::Concise;
11 BEGIN { our @ISA = qw(Exporter) }
14 Dlog_debug DlogS_debug
15 Dlog_trace DlogS_trace
18 Dlog_error DlogS_error
19 Dlog_fatal DlogS_fatal
33 qw{set_logger with_logger}
43 die 'Log::Contextual does not have a default import list'
46 for my $idx ( 0 .. $#_ ) {
47 if ( $_[$idx] eq '-logger' ) {
48 set_logger($_[$idx + 1]);
53 $package->export_to_level(1, $package, @_);
60 $logger = do { my $l = $logger; sub { $l } }
61 if ref $logger ne 'CODE';
62 $Get_Logger = $logger;
67 $logger = do { my $l = $logger; sub { $l } }
68 if ref $logger ne 'CODE';
69 local $Get_Logger = $logger;
74 my $log = $Get_Logger->();
75 $log->trace($_[0]->())
80 my $log = $Get_Logger->();
81 $log->debug($_[0]->())
86 my $log = $Get_Logger->();
92 my $log = $Get_Logger->();
98 my $log = $Get_Logger->();
99 $log->error($_[0]->())
104 my $log = $Get_Logger->();
105 $log->fatal($_[0]->())
111 sub Dlog_trace (&@) {
115 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
120 sub DlogS_trace (&$) {
124 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
129 sub Dlog_debug (&@) {
133 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
138 sub DlogS_debug (&$) {
142 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
151 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
156 sub DlogS_info (&$) {
160 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
169 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
174 sub DlogS_warn (&$) {
178 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
183 sub Dlog_error (&@) {
187 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
192 sub DlogS_error (&$) {
196 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
201 sub Dlog_fatal (&@) {
205 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
210 sub DlogS_fatal (&$) {
214 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
225 Log::Contextual - Super simple logging interface
231 my $logger = WarnLogger->new;
232 my $logger2 = FileLogger->new;
234 set_logger { $logger };
236 log_debug { "program started" };
240 log_trace { "foo entered" };
242 log_trace { "foo left" };
248 This module is for simplistic but very extensible logging.
254 my $logger = WarnLogger->new;
255 set_logger { $logger };
257 Arguments: CodeRef $returning_logger
261 my $logger = WarnLogger->new;
262 with_logger { $logger } sub {
264 log_fatal { 'Non Logical Universe Detected' };
266 log_info { 'All is good' };
270 Arguments: CodeRef $to_execute, CodeRef $returning_logger
274 log_trace { 'entered method foo with args ' join q{,}, @args };
276 Arguments: CodeRef $returning_message
280 log_debug { 'entered method foo' };
282 Arguments: CodeRef $returning_message
286 log_info { 'started process foo' };
288 Arguments: CodeRef $returning_message
292 log_warn { 'possible misconfiguration at line 10' };
294 Arguments: CodeRef $returning_message
298 log_error { 'non-numeric user input!' };
300 Arguments: CodeRef $returning_message
304 log_fatal { '1 is never equal to 0!' };
306 Arguments: CodeRef $returning_message
310 This package also provides:
312 L<Log::Contextual::Sugar> - provides Dlog_$level and DlogS_$level convenience
317 frew - Arthur Axel "fREW" Schmidt <frioux@gmail.com>
321 mst - Matt S. Trout <mst@shadowcat.co.uk>
325 Copyright (c) 2010 the Log::Contextual L</AUTHOR> and L</DESIGNER> as listed
330 This library is free software and may be distributed under the same terms as
335 .:13:03:05:. <@mst> amazing how simple this stuff is once you get the paradigm
336 .:13:03:13:. <@mst> also consider
337 .:13:04:17:. <@mst> package Catalyst::Plugin::LogContextual; use Moose::Role; around
338 handle_request => sub { my ($orig, $self) = (shift, shift); my @args = @_;
339 with_logger { $self->log } sub { $self->$orig(@args) } };