perl记录日志
2015-08-12 11:58
856 查看
转载请注明出处: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 后就能使用.
输出的内容如下:
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}
修改日志打印级别
想修改显示级别,让更加多的日志显示的话
修改日志打印的格式
这个日志在打印时,可以直接加一个 local $Log::Minimal::AUTODUMP = 1; 可以自动打印数据结构.
打印日志到指定的文件
这个只要配合上 File::Stamped 这个模块,可以很方便的给日志存成文件,我们直接使用 File::Stamped 成生一个日志存放到文件的句柄,然后修改一下 Log::Minimal 的输出默认打印到这个句柄就行了.
写程序时,打印日志是非常好的习惯,对我们排错,查问题非常有用.平时我们喜欢自己写个函数来处理日志,要么直接 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"; };
相关文章推荐
- 2015 多校联赛 ——HDU5371(manacher + 枚举)
- 算法定义及其主要特征
- fd_set 用法 socket
- 【 论文学习记录】A flexible and scalable slam system with full 3d motion estimation
- HttpWebRequest抓取网页内容与直接输入URL得到的内容不一致!球大神帮忙!!
- Eclipse文件路径
- UVa10023手动开大数平方算法
- Linux下find命令用法小结
- 在qt中碰到了suze
- 页面登录密码加密传输机制
- linux(debian/ubuntu)下连接安卓手机--小米4为例
- tomcat connector运行模式,优化tomcat运行性能
- C++指针
- Deep Analysis UIImageJPEGRepresentation&UIImagePNGRepresentation
- 常用开源整理
- <context-param>的作用
- Python3.x urllib
- 制作企业网站要关注哪些问题
- android中canvas的clipRect和concate调用顺序不同导致的图像效果不同。
- Linux下各种性能监控的命令(整理)