记录程序日志
写程序时,打印日志是非常好的习惯,对我们排错,查问题非常有用。平时我们喜欢自己写个函数来处理日志,要么直接 print .在 Perl 中有个专门处理日志的模块叫 Log::Log4perl 这个是个重量级的家伙,所以不喜欢,配置的可读性也不怎么样。
但他和操作系统一样,提供了几个级别的日志 FATAL, ERROR, WARN, INFO,DEBUG, TRACE 几个日志级别给我们使用,我们可以根据不同的时候使用不同的级别来输出不同的内容。
我现在要介绍一个小模块 Log::Minimal 也达到上面的功能。这个提供 DEBUG、INFO、WARN、CRITICAL 这几个级别的日志给我们使用。
基本使用方法
使用非常简单,直接 use 后就能使用。
#!/usr/bin/perl use strict; use warnings; use Log::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
修改日志打印级别
想修改显示级别,让更加多的日志显示的话
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 use strict; use warnings; use Log::Minimal; use File::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"; };
建议继续学习:
- server日志的路径分析 (阅读:10079)
- perl更新/修改/删除文本文件内容 (阅读:9424)
- AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁) (阅读:8833)
- 利用脚本分析日志并利用snmp自定义OID,再通过cacti画图 (阅读:8670)
- tomcat catalina.out日志切割每天生成一个文件 (阅读:8065)
- 分布式日志系统scribe使用手记 (阅读:8021)
- perl大牛flw传说 (阅读:6506)
- AWStats是一个基于Perl的WEB日志分析工具。 (阅读:6089)
- perl模块Getopt::Std用法及实例-从命令行读取参数模块 (阅读:5867)
- [Perl] Template::Toolkit 模板技术. (阅读:5361)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:扶凯 来源: 扶凯
- 标签: Perl 日志
- 发布时间:2011-06-01 13:40:29
- [68] 如何拿下简短的域名
- [68] Go Reflect 性能
- [64] Oracle MTS模式下 进程地址与会话信
- [61] 图书馆的世界纪录
- [60] IOS安全–浅谈关于IOS加固的几种方法
- [60] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [53] 视觉调整-设计师 vs. 逻辑
- [48] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 界面设计速成