OSSEC/lib/OSSEC/Log.pm

173 lines
2.5 KiB
Perl

package OSSEC::Log;
# ABSTRACT: OSSEC::Log - Module for logging OSSEC log messages
use strict;
use warnings;
use Moose;
use DateTime;
=attr ossecPath
base path to the ossec installation B<default> /var/ossec
=cut
has 'ossecPath' => (is => 'rw', isa => 'Str' , default => "/var/ossec" );
=attr file
in which file to log the messages
=cut
has 'file' => (is => 'rw', isa => 'Str');
=method error
log error message
=over
=item B<Param1>=I<program name which is logging>
=item B<Param2>=I<the message to log>
=back
log->error("OSSEC-Jabber","alert not found");
=cut
sub error
{
my $self = shift;
my $programm = shift;
my $message = shift;
$self->log("ERROR",$programm, $message);
}
=method fatal
log fatal message and die
=over
=item B<Param1>=I<program name which is logging>
=item B<Param2>=I<the message to log>
=back
log->fatal("OSSEC-Jabber","could not connect to mysql server");
=cut
sub fatal
{
my $self = shift;
my $programm = shift;
my $message = shift;
$self->log("FATAL",$programm, $message);
die;
}
=method info
log info message
=over
=item B<Param1>=I<program name which is logging>
=item B<Param2>=I<the message to log>
=back
log->info("OSSEC-Jabber","alert send");
=cut
sub info
{
my $self = shift;
my $programm = shift;
my $message = shift;
$self->log("INFO",$programm, $message);
}
=method debug
log debug message
=over
=item B<Param1>=I<program name which is logging>
=item B<Param2>=I<the message to log>
=back
log->error("OSSEC-Jabber","found alert in database");
=cut
sub debug
{
my $self = shift;
my $programm = shift;
my $message = shift;
$self->log("DEBUG",$programm, $message);
}
=method log
log messages to the logfile
=over
=item B<Param1>=I<Type of log message>
=item B<Param2>=I<program name which is logging>
=item B<Param3>=I<the message to log>
=back
=cut
sub log
{
my $self = shift;
my $type = shift;
my $programm = shift;
my $message = shift;
# a logfile is required
die("no logfile selected") unless $self->file();
# create the full path to the file
my $file = $self->ossecPath() . "/" . $self->file();
# open the logfile
open(my $fh1, ">>", "/tmp/log");
print $fh1 $file . "\n";
close $fh1;
my $dt = DateTime->now;
# create the full log message
my $msg = sprintf("%10s %8s - %5s - %20s - %s\n",$dt->ymd(), $dt->hms(), $type, $programm, $message);
# open the logfile
open(my $fh, ">>", $file);
print $fh $msg;
close $fh;
}
1;