1 package Log::Contextual;
8 use Data::Dumper::Concise;
10 BEGIN { @ISA = qw(Exporter) }
13 Dlog_debug DlogS_debug
14 Dlog_trace DlogS_trace
17 Dlog_error DlogS_error
18 Dlog_fatal DlogS_fatal
32 qw{set_logger with_logger}
41 die 'Log::Contextual does not have a default import list'
43 __PACKAGE__->export_to_level(1, shift, @_);
54 $logger = do { my $l = $logger; sub { $l } }
55 if ref $logger ne 'CODE';
56 local $Get_Logger = $logger;
61 my $log = $Get_Logger->();
62 $log->trace($_[0]->())
67 my $log = $Get_Logger->();
68 $log->debug($_[0]->())
73 my $log = $Get_Logger->();
79 my $log = $Get_Logger->();
85 my $log = $Get_Logger->();
86 $log->error($_[0]->())
91 my $log = $Get_Logger->();
92 $log->fatal($_[0]->())
102 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
107 sub DlogS_trace (&$) {
111 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
116 sub Dlog_debug (&@) {
120 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
125 sub DlogS_debug (&$) {
129 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
138 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
143 sub DlogS_info (&$) {
147 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
156 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
161 sub DlogS_warn (&$) {
165 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
170 sub Dlog_error (&@) {
174 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
179 sub DlogS_error (&$) {
183 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
188 sub Dlog_fatal (&@) {
192 do { local $_ = Data::Dumper::Concise::Dumper @values; $code->() };
197 sub DlogS_fatal (&$) {
201 do { local $_ = Data::Dumper::Concise::Dumper $value; $code->() };
212 Log::Contextual - Super simple logging interface
218 my $logger = WarnLogger->new;
219 my $logger2 = FileLogger->new;
221 set_logger { $logger };
223 log_debug { "program started" };
227 log_trace { "foo entered" };
229 log_trace { "foo left" };
235 This module is for simplistic but very extensible logging.
241 my $logger = WarnLogger->new;
242 set_logger { $logger };
244 Arguments: CodeRef $returning_logger
248 my $logger = WarnLogger->new;
249 with_logger { $logger } sub {
251 log_fatal { 'Non Logical Universe Detected' };
253 log_info { 'All is good' };
257 Arguments: CodeRef $to_execute, CodeRef $returning_logger
261 log_trace { 'entered method foo with args ' join q{,}, @args };
263 Arguments: CodeRef $returning_message
267 log_debug { 'entered method foo' };
269 Arguments: CodeRef $returning_message
273 log_info { 'started process foo' };
275 Arguments: CodeRef $returning_message
279 log_warn { 'possible misconfiguration at line 10' };
281 Arguments: CodeRef $returning_message
285 log_error { 'non-numeric user input!' };
287 Arguments: CodeRef $returning_message
291 log_fatal { '1 is never equal to 0!' };
293 Arguments: CodeRef $returning_message
297 This package also provides:
299 L<Log::Contextual::Sugar> - provides Dlog_$level and DlogS_$level convenience
304 frew - Arthur Axel "fREW" Schmidt <frioux@gmail.com>
308 mst - Matt S. Trout <mst@shadowcat.co.uk>
312 Copyright (c) 2010 the Log::Contextual L</AUTHOR> and L</DESIGNER> as listed
317 This library is free software and may be distributed under the same terms as
322 .:13:03:05:. <@mst> amazing how simple this stuff is once you get the paradigm
323 .:13:03:13:. <@mst> also consider
324 .:13:04:17:. <@mst> package Catalyst::Plugin::LogContextual; use Moose::Role; around
325 handle_request => sub { my ($orig, $self) = (shift, shift); my @args = @_;
326 with_logger { $self->log } sub { $self->$orig(@args) } };