zoukankan      html  css  js  c++  java
  • Log4perl 的使用

    Perl 使用Log4perl

    首先下载log4 module :

    http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/Log-Log4perl-1.43.tar.gz

    解压配置:

    这里只用到lib目录下的文件,可以将其他目录删除。

    如何使用这个模块:

    新增一个名为log4perl.conf的文件,放在lib目录下

    配置如下:

    这里使用自定义的package: log4用来设置log路径

     log4perl.category.Foo.Bar=DEBUG,Logfile,Screen
     log4perl.rootLogger=DEBUG,Logfile,Screen
    
      log4perl.appender.Logfile=Log::Log4perl::Appender::File
      log4perl.appender.Logfile.filename= 
                                         sub { return &log4::set_log_name(); }
         log4perl.appender.Logfile.layout=Log::Log4perl::Layout::PatternLayout
      log4perl.appender.Logfile.layout.ConversionPattern =%d{yyyy/M/d HH:mm:ss} %F %L - %m%n
    
      log4perl.appender.Screen = Log::Log4perl::Appender::Screen
      log4perl.appender.Screen.stderr = 0
      log4perl.appender.Screen.layout = Log::Log4perl::Layout::PatternLayout
      log4perl.appender.Screen.layout.ConversionPattern =%d{yyyy/M/d HH:mm:ss} %F %L - %m%n

    使用log4perl.conf

    #!/usr/bin/perl
    package log4;
    use strict;
    use FindBin qw($Bin);
    use lib "$Bin/lib";
    print "$Bin
    ";
    use Log::Log4perl qw(get_logger);
    my $log = get_logger(__PACKAGE__);
    my $log_name="log4.log";
    my $log_conf = "$Bin/lib/log4perl.conf";
    print "$log_conf
    ";
    
    # Check config every 60 secs 
    Log::Log4perl::init_and_watch($log_conf,60);  
     
     
    $log->debug("Debug message");
    $log->info("Info message");
    $log->error("Error message");
    $log->info(&ping);
    sub ping
    {
    
        my @ping=readpipe("ping 127.0.0.1");
        return @ping;
    }
    sub set_log_name
    {
        return $log_name;
    }

    其中:

    $log->trace("..."); # Log a trace message
    $log->debug("..."); # Log a debug message
    $log->info("..."); # Log a info message
    $log->warn("..."); # Log a warn message
    $log->error("..."); # Log a error message
    $log->fatal("..."); # Log a fatal message

     

    运行结果如下:

    D:perl>perl log4test.pl
    D:/perl
    D:/perl/lib/log4perl.conf
    2014/4/22 14:40:29 log4test.pl 17 - Debug message
    2014/4/22 14:40:29 log4test.pl 18 - Info message
    2014/4/22 14:40:29 log4test.pl 19 - Error message
    2014/4/22 14:40:33 log4test.pl 20 -
    Pinging 127.0.0.1 with 32 bytes of data:
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64

    Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

     

    生成log内容是:

    2014/4/22 14:40:29 log4test.pl 17 - Debug message
    2014/4/22 14:40:29 log4test.pl 18 - Info message
    2014/4/22 14:40:29 log4test.pl 19 - Error message
    2014/4/22 14:40:33 log4test.pl 20 -
    Pinging 127.0.0.1 with 32 bytes of data:
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
    Reply from 127.0.0.1: bytes=32 time<1ms TTL=64

    Ping statistics for 127.0.0.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

    也可以直接将配置文件放入脚本

     my $conf = q(
        log4perl.category.Foo.Bar          = INFO, Logfile, Screen
    
        log4perl.appender.Logfile          = Log::Log4perl::Appender::File
        log4perl.appender.Logfile.filename = test.log
        log4perl.appender.Logfile.layout   = Log::Log4perl::Layout::PatternLayout
        log4perl.appender.Logfile.layout.ConversionPattern = [%r] %F %L %m%n
    
        log4perl.appender.Screen         = Log::Log4perl::Appender::Screen
        log4perl.appender.Screen.stderr  = 0
        log4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
      );
    
         # ... passed as a reference to init()
      Log::Log4perl::init( $conf );
  • 相关阅读:
    HFish 源码Git下载 源码编译执行
    Windows注册表-学习总结
    利用PHPStudy搭建Xdebug调试环境
    Python3报错Crypto失败(from Crypto.Cipher import AES ModuleNotFoundError: No module named 'Crypto')
    Django后台管理admin字段控制显示长度(字段内容过长,省略号替代)
    PHP代码审计-小题一道
    golang编程-小问题
    迅雷影音播放器-ass字幕乱码-问题
    《独自等待》观影有感
    Python urllib URL 处理模块
  • 原文地址:https://www.cnblogs.com/tobecrazy/p/3680511.html
Copyright © 2011-2022 走看看