perlテスト

・test2.pl
require lib_common.pl ;

print logf( DEBUG ssss test );
print logf( INFO ssss test );
print logf( WARNING ssss test );
print logf( ERROR ssss test );




・lib_common.pl
#!/usr/bin/perl

use POSIX strftime ;

# エラーレベル
our $E_LEVEL_DEBUG = 1;
our $E_LEVEL_INFO = 2;
our $E_LEVEL_WARNING = 3;
our $E_LEVEL_ERROR = 4;

# ログファイル
$LOGFILE_NAME = log_kinrisystem.log ;

# ログファイルに表示する、エラーレベル(対象のレベル以上を表示)
$LOG_LEVEL = 2; # 1:DEBUG 2:INFO 3:WARNING 4:ERROR

sub logf {
my ($level $message) = @_;
my ($pkg $file $line) = caller;
my @time = localtime;
my $now = strftime %Y/%m/%d %H:%M:%S localtime;
my $logmsg = $now . [ . $level . ] . $message . at . $file . line . $line . ¥n ;

if( $level eq DEBUG ) {
if( $E_LEVEL_DEBUG >= $LOG_LEVEL ){
log_write($logmsg); # すべてのメッセージを出力
}
}
if( $level eq INFO ) {
if( $E_LEVEL_INFO >= $LOG_LEVEL ){
log_write($logmsg); # INFOレベル以上のメッセージを出力
}
}
if( $level eq WARNING ) {
if( $E_LEVEL_WARNING >= $LOG_LEVEL ){
log_write($logmsg); # WARNレベル以上のメッセージを出力
}
}
if( $level eq ERROR ) {
if( $E_LEVEL_ERROR >= $LOG_LEVEL ){
log_write($logmsg); # ERRORのメッセージを出力
}
}

}

sub log_write {
my ($logmsg) = @_;

# ログファイル追加モードでオープン
open($fh_log >> $LOGFILE_NAME) or die(qq/Can t open file $LOGFILE_NAME : $!/);

# ログ書き込み 日付 時間 : ログメッセージ(改行)
printf($fh_log %s $logmsg);

# ログファイルクローズ
close($fh_log) or die(qq/Can t close file $LOGFILE_NAME : $!/);

}