加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl Log::FileSimple

发布时间:2020-12-15 20:51:58 所属栏目:大数据 来源:网络整理
导读:Log是常用模块,看了下Perl自带的Log::Message模块,不太明白,从网上找了一个简单的Log模块,看下他的实现方法,可以从中学习一些方法和技巧。 ----------------------------------------------------

Log是常用模块,看了下Perl自带的Log::Message模块,不太明白,从网上找了一个简单的Log模块,看下他的实现方法,可以从中学习一些方法和技巧。 ---------------------------------------------------------- package Log::FileSimple; use 5.006; use strict; use warnings; use Carp; use FileHandle; use Data::Dumper; $Log::FileSimple::VERSION??? = '0.02'; # Fields that can be set in new method,with defaults my %fields =(??? ??? file ??? => '/tmp/log.log',??? name??? => undef,??? mask??? => 0xFFFF,??? autoflush => 0,); sub new {??????????? ??? my ($proto,%options) = @_; ??? my $class = ref($proto) || $proto; ??? my $self = { ??????? %fields}; ??? while (my ($key,$value) = each(%options)) { ??????? if (exists($fields{$key})) { ??????????? $self->{$key} = $value if (defined $value); ??????? } else { ??????????? die ref($class) . "::new: invalid option '$key'/n"; ??????? } ??? } ??? foreach (keys(%fields)) { ??? ??? die ref($class) . "::new: must specify value for $_" ??? ??? ??? if (!defined $self->{$_}); ??? } ??? $self->{mask} = 0xFFFF if ($self->{mask} == -1); ??? bless $self,$class; ??? $self->_init; ??? return $self; } sub _init { ??? my $self = shift; ??? $self->{fh} = new FileHandle ">>$self->{file}"; ??? $self->{fh}->autoflush($self->{autoflush}); ??? die "Unable to write to $self->{file}" if (!defined $self->{fh}); } sub DESTROY { ??? my $self = shift; ??? $self->{fh}->close; ??? undef $self->{fh}; ??? # Enter here your code } sub log { ??? my $self ??? ??? = shift; ??? my %log_data ??? = @_; ??? ??? $log_data{'id'} = $self->{mask} ??? ??? if (!exists $log_data{'id'}); ??? #$self->{fh}->print("Data :" . $log_data{'id'} . "-" . ??? #??? $self->{mask} . "-" . ($log_data{'id'} & $self->{mask}) ."/n"); ??? return if (($log_data{'id'} & $self->{mask}) == 0); ??? my $timestamp??? = localtime; ??? my $sep??? ??? ??? = '-' x 80; ??? my $log_data = $log_data{'message'} . "/n" ??? ??? ??? ?if (exists $log_data{'message'}); ??? ??? if (exists $log_data{'objects'}) { ??? ??? foreach (@{$log_data{'objects'}}) { ??? ??? ??? $log_data .= Data::Dumper::Dumper($_) . "/n"; ??? ??? } ??? } ??? my $print_data??? =<<EOF; [$timestamp] -> $self->{name} $log_data $sep EOF ??? $self->{fh}->print($print_data); } sub mask { my $s = shift; if (@_) { $s->{mask} = shift; } return $s->{mask}; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读