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 /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=I =item B=I =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=I =item B=I =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=I =item B=I =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=I =item B=I =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=I =item B=I =item B=I =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;