perl记录日志

转载请注明出处:http://www.php-oa.com/2011/05/25/perl-app-log-logminimal.html

写程序时,打印日志是非常好的习惯,对我们排错,查问题非常有用.平时我们喜欢自己写个函数来处理日志,要么直接 print .在 Perl 中有个专门处理日志的模块叫 Log::Log4perl 这个是个重量级的家伙,所以不喜欢,配置的可读性也不怎么样.

但他和操作系统一样,提供了几个级别的日志 FATAL, ERROR, WARN, INFO,DEBUG, TRACE 几个日志级别给我们使用,我们可以根据不同的时候使用不同的级别来输出不同的内容.

我现在要介绍一个小模块 Log::Minimal 也达到上面的功能.这个提供 DEBUG、INFO、WARN、CRITICAL 这几个级别的日志给我们使用.

使用 Log::Minimal 的好处

  • 支持 warnf, critf, infoff, debugff
  • 没必要建一个对象出来
  • $AUTODUMP 可以实现引用之类的自动 Dumper
  • 支持 Middleware 可以很好的扩展
  • 支持修改环境变量直接控制打印的内容

基本使用方法
使用非常简单,直接 use 后就能使用.


#!/usr/bin/perl

usestrict;

usewarnings;

useLog::Minimal;

 

critf("foo");

warnf("foo");

infof("foo");

debugf("foo");


输出的内容如下:
2011-05-25T14:21:51 [CRITICAL] foo at t.pl line 6
2011-05-25T14:21:51 [WARN] foo at t.pl line 7
2011-05-25T14:21:51 [INFO] foo at t.pl line 8
默认只显示 INFO 级别以上的日志.如果要显示 INFO 以下的日志,可以直接使用环境变量 $ENV{LM_DEBUG}


$
 LM_DEBUG=1 perl log.pl      

2011-05-25T14:23:15
 [CRITICAL] foo at t.pl line 6

2011-05-25T14:23:15
 [WARN]
 foo at t.pl line 7

2011-05-25T14:23:15
 [INFO] foo at t.pl line 8

2011-05-25T14:23:15
 [DEBUG] foo at t.pl line 9

修改日志打印级别
想修改显示级别,让更加多的日志显示的话

1
	

local$Log::Minimal::LOG_LEVEL
 = "INFO";

修改日志打印的格式

local$Log::Minimal::PRINT=sub{

    my($time,$type,$message,$trace)
 = @_;

    print("$time
 $type $message $trace\n");

这个日志在打印时,可以直接加一个 local $Log::Minimal::AUTODUMP = 1; 可以自动打印数据结构.

打印日志到指定的文件
这个只要配合上 File::Stamped 这个模块,可以很方便的给日志存成文件,我们直接使用 File::Stamped 成生一个日志存放到文件的句柄,然后修改一下 Log::Minimal 的输出默认打印到这个句柄就行了.


#!/usr/bin/perl

usestrict;

usewarnings;

useLog::Minimal;

useFile::Stamped;

 

my$fh=
 File::Stamped->new(pattern => 'myapp_log_%Y%m%d.txt');

local$Log::Minimal::PRINT=sub{

    my($time,$type,$message,$trace)
 = @_;

    print{$fh}"$time
 [$type] $message at $trace\n";

};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值