The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package MooseX::Log::Log4perl::Easy;

use Any::Moose 'Role';

with 'MooseX::Log::Log4perl';

our $VERSION = '0.46';

sub log_fatal { local $Log::Log4perl::caller_depth += 1; return shift->logger->fatal(@_); }
sub log_error { local $Log::Log4perl::caller_depth += 1; return shift->logger->error(@_); }
sub log_warn  { local $Log::Log4perl::caller_depth += 1; return shift->logger->warn(@_); }
sub log_info  { local $Log::Log4perl::caller_depth += 1; return shift->logger->info(@_); }
sub log_debug { local $Log::Log4perl::caller_depth += 1; return shift->logger->debug(@_); }
sub log_trace { local $Log::Log4perl::caller_depth += 1; return shift->logger->trace(@_); }

1;

__END__

=head1 NAME

MooseX::Log::Log4perl::Easy - A role for easy usage of logging in your Moose based modules based on L<MooseX::Log::Log4perl>

=head1 SYNOPSIS

 package MyApp;
 use Moose;
 use Log::Log4perl qw(:easy);

 with 'MooseX::Log::Log4perl::Easy';

 BEGIN {
 	Log::Log4perl->easy_init();
 }

 sub foo {
   my ($self) = @_;
   $self->log_debug("started bar");            ### logs with default class catergory "MyApp"
   $self->log_info('bar');                     ### logs an info message
   $self->log('AlsoPossible')->fatal("croak"); ### log
 }

=head1 DESCRIPTION

The Easy logging role based on the L<MooseX::Log::Log4perl> logging role for Moose directly adds the
logmethods for all available levels to your class instance. Hence it is possible to use

  $self->log_info("blabla");

without having to access a separate log attribute as in MooseX::Log::Log4perl;

In case your app grows and you need more of the super-cow powers of Log4perl or simply don't want the additional 
methods to clutter up your class you can simply replace all code C<< $self->log_LEVEL >> with 
C<< $self->log->LEVEL >>.

You can use the following regex substitution to accomplish that:

  s/log(_(trace|debug|info|warn|error|fatal))/log->$2/g

=head1 ACCESSORS

=head2 logger

See L<MooseX::Log::Log4perl>

=head2 log

See L<MooseX::Log::Log4perl>

=head2 log_fatal ($msg)

Logs a fatal message $msg using the logger attribute. Same as calling

  $self->logger->fatal($msg)

=head2 log_error ($msg)

Logs an error message using the logger attribute. Same as calling

  $self->logger->error($msg)

=head2 log_warn ($msg)

Logs a warn message using the logger attribute. Same as calling

  $self->logger->warn($msg)

=head2 log_info ($msg)

Logs an info message using the logger attribute. Same as calling

  $self->logger->info($msg)

=head2 log_debug ($msg)

Logs a debug message using the logger attribute. Same as calling

  $self->logger->debug($msg)

=head2 log_trace ($msg)

Logs a trace message using the logger attribute. Same as calling

  $self->logger->trace($msg)

=head1 SEE ALSO

L<MooseX::Log::Log4perl>, L<Log::Log4perl>, L<Moose>

=head1 BUGS AND LIMITATIONS

Please report any bugs or feature requests to
C<bug-moosex-log4perl@rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org>.

Or come bother us in C<#moose> on C<irc.perl.org>.

=head1 AUTHOR

Roland Lammel C<< <lammel@cpan.org> >>

Inspired by suggestions by Michael Schilli C<< <m@perlmeister.com> >>

Contributions from Tim Bunce C<< <TIMB@cpan.org> >>

=head1 LICENSE AND COPYRIGHT

Copyright (c) 2008-2012, Roland Lammel C<< <lammel@cpan.org> >>, http://www.quikit.at

This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlartistic>.