The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 NAME

Log::FileSimple - A simple tool to write messages and objects dump to log file.

=head1 SYNOPSIS

  use Log::FileSimple;
  
  my $log = new Log::FileSimple(  name      => 'Log::FileSimple logs',
                                  file      => './log.log',
                                  mask      => -1,
                                  autoflush => 0,
                              );
  my $message;
  
  $message    = 'Simple log message';
  $log->log(  message => $message);

  $message    = 'Another printed message';
  $log->log(  message => $message, id => 0b1);
  
  $log->mask(0b10); # changing mask filter
  
  $message    = 'This will not be printed owing to mask';
  $log->log(  message => $message, id => 0b1);
  
  $message    = 'This will be printed';
  $log->log(  message => $message, id => 0b10);
  
  $log->mask(0xFFFF); # enabling all messages log
  
  $message    = 'This is a dump of myself';
  $log->log(  message => $message, objects => [$log]);
  
  $message    = 'This is a dump of two structures';
  $log->log(  message => $message, 
              objects => [ 
                            {a => 1, b => 2},
                            ['one', 'two', 'three']
                ]
            );

=head1 DESCRIPTION

The purpose of this module is to give a simple tool to write messages to a log file.

It gives also the possibility to filter what to print and what not to print using a
filter mask. If the id of the message and-ed with the mask is zero then log will be
rejected otherwise not.

It's also possible to add a list of objects that will be dumped in log using 
Data::Dumper module.

Every log have this format:

  =================================================================
  [Timestamp] => $self->{name}
  $self->{message}
  ...dumping of objects...
  =================================================================

=head1 CLASS INTERFACE

=head2 CONSTRUCTORS

The C<new> constructor return an istance of C<Log::FileSimple> object. It has three
parameters which you can set here:

  $log = new Log::FileSimple(  
                               name    => $name,
                               [ file      => $file ],
                               [ mask      => $mask ],
                               [ autoflush => (0|1) ],
                             );

=over 4 

=item B<PARAMETERS>

=item file

It's the file path of the log. If file exists log will be appended. If file doesn't
exist it will be created.

=item name

It's the name of log in the case that more process logs to the same file at the same
time.

=item mask

It's a 32 bit mask that will be used to filter messages. If the id of message and-ed 
with this value is zero then message will be discarded.

If this value is 0 nothing will be logged.

If this value is C<0xFFFF> or -1 all messages will be logged.

=item autoflush

It's a boolean value that enabled or disabled autoflush of data into
log file. Default value is 0 that is autoflushing data is disabled.

=back

=head2 PUBLIC METHODS

=over 4

=item log( message => $message , [id => $id], [objects => $objs_arrayref])

Add a log item to log file. 

=over 4

=item message

It's the message string that will be printed in the log item.

=item id

It's an optional message id used if it's necessary to filter message. If omitted
C<0xFFFF> will be assumed and so message will be always print at least than mask
is 0.

=item objects

It's an optional reference to an array of objects. Every object in the array will
be dumped using C<Data::Dumper> module in the log item. 

=back

=back

=head1 DIAGNOSTICS

No diagnostics error returned.

=head1 EXPORT

Nothing exported


=head1 REQUIRES 

FileHandle, Data::Dumper

=head1 AUTHOR

Emiliano Bruni, E<lt>info@ebruni.itE<gt>

=head1 SEE ALSO

L<FileHandle> , L<Data::Dumper>

=cut