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, @_);
64 $logger = do { my $l = $logger; sub { $l } }
65 if ref $logger ne 'CODE';
66 local $Get_Logger = $logger;
71 my $log = $Get_Logger->();
72 $log->trace($_[0]->())
77 my $log = $Get_Logger->();
78 $log->debug($_[0]->())
83 my $log = $Get_Logger->();
89 my $log = $Get_Logger->();
95 my $log = $Get_Logger->();
96 $log->error($_[0]->())
101 my $log = $Get_Logger->();
102 $log->fatal($_[0]->())
108 sub Dlog_trace (&@) {
112 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
117 sub DlogS_trace (&$) {
121 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
126 sub Dlog_debug (&@) {
130 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
135 sub DlogS_debug (&$) {
139 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
148 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
153 sub DlogS_info (&$) {
157 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
166 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
171 sub DlogS_warn (&$) {
175 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
180 sub Dlog_error (&@) {
184 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
189 sub DlogS_error (&$) {
193 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
198 sub Dlog_fatal (&@) {
202 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
207 sub DlogS_fatal (&$) {
211 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
222 Log::Contextual - Super simple logging interface
228 my $logger = WarnLogger->new;
229 my $logger2 = FileLogger->new;
231 set_logger { $logger };
233 log_debug { "program started" };
237 log_trace { "foo entered" };
239 log_trace { "foo left" };
245 This module is for simplistic but very extensible logging.
251 my $logger = WarnLogger->new;
252 set_logger { $logger };
254 Arguments: CodeRef $returning_logger
258 my $logger = WarnLogger->new;
259 with_logger { $logger } sub {
261 log_fatal { 'Non Logical Universe Detected' };
263 log_info { 'All is good' };
267 Arguments: CodeRef $to_execute, CodeRef $returning_logger
271 log_trace { 'entered method foo with args ' join q{,}, @args };
273 Arguments: CodeRef $returning_message
277 log_debug { 'entered method foo' };
279 Arguments: CodeRef $returning_message
283 log_info { 'started process foo' };
285 Arguments: CodeRef $returning_message
289 log_warn { 'possible misconfiguration at line 10' };
291 Arguments: CodeRef $returning_message
295 log_error { 'non-numeric user input!' };
297 Arguments: CodeRef $returning_message
301 log_fatal { '1 is never equal to 0!' };
303 Arguments: CodeRef $returning_message
307 This package also provides:
309 L<Log::Contextual::Sugar> - provides Dlog_$level and DlogS_$level convenience
314 frew - Arthur Axel "fREW" Schmidt <frioux@gmail.com>
318 mst - Matt S. Trout <mst@shadowcat.co.uk>
322 Copyright (c) 2010 the Log::Contextual L</AUTHOR> and L</DESIGNER> as listed
327 This library is free software and may be distributed under the same terms as
332 .:13:03:05:. <@mst> amazing how simple this stuff is once you get the paradigm
333 .:13:03:13:. <@mst> also consider
334 .:13:04:17:. <@mst> package Catalyst::Plugin::LogContextual; use Moose::Role; around
335 handle_request => sub { my ($orig, $self) = (shift, shift); my @args = @_;
336 with_logger { $self->log } sub { $self->$orig(@args) } };