=head1 NAME LedgerSMB::Log - LedgerSMB logging and debugging framework =head1 SYOPSIS This module maintains a connection to the LedgerSMB log file (Seperate from the apche error log, for now) =head1 METHODS This module is loosly based on Apache::Log. Available methods: (in order, most to least severe) =over 4 =item emerg =item alert =item crit =item error =item warn =item notice =item info =item debug =item longmess This uses Carp to make a debug message with the full stack backtrace, including function arguments, where Carp can infer them. =item dump This uses Data::Dumper to dump the contents of a data structure as a debug message. =back =cut package LedgerSMB::Log; use strict; use warnings; use IO::File; use Data::Dumper; use LedgerSMB::Sysconfig; use Carp (); our $VERSION = '1.0.0'; our $log_line; sub print { if (!$LedgerSMB::Sysconfig::logging){ return 0; } shift; $log_line = sprintf('[%s] [%s] %i %s', scalar(localtime), +shift, $$, join(' ',@_))."\n"; print STDERR $log_line; } sub emerg { shift->print('emerg',@_) } sub alert { shift->print('alert',@_) } sub crit { shift->print('crit',@_) } sub error { shift->print('error',@_) } sub warn { shift->print('warn',@_) } sub notice { shift->print('notice',@_) } sub info { shift->print('info',@_) } sub debug { shift->print('debug',@_) } sub longmess { shift->print('debug',Carp::longmess(@_)) } sub dump { my $self = shift; my $d = Data::Dumper->new([@_]); $d->Sortkeys(1); $self->print('debug',$d->Dump()); } 1;