Perl Log::FileSimple

Perl--printlog函数 #use strict; #use warnings; use File::Path; use File::Copy; use DBI; #use Net::FTP; use HTTP::Date qw(time2iso str2time time2iso time2isoz); sub printlog { print "\@_ is @_\n"; my ($LogInfo)= @_; 阅读详情

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}; }

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

Perl学习笔记(2)

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font

wang_xf的Study home 2234

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

Perl 记录日志

写程序时,打印日志是非常好的习惯,对我们排错,查问题非常有用.平时我们喜欢自己写个函数来处理日志,要么直接 print .在 Perl 中有个专门处理日志的模块叫 Log::Log4perl 这个是个重量级的家伙,所以不喜欢,配置的可读性也不怎么样. 但他和操作系统一样,提供了几个级别的日志 FATAL, ERROR, WARN, INFO,DEBUG, TRACE 几个日志级别给我们使用,

davidliu007的专栏 3437

遥感大模型核心技术之自监督预训练技术研究(2025年9月版)

本文系统探讨了自监督预训练技术在遥感大模型构建中的核心作用。随着遥感数据进入"大数据"时代,传统监督学习面临"数据丰富、标签贫乏"的瓶颈,而自监督预训练通过设计代理任务从无标签数据中学习特征表示,成为驱动大模型发展的关键引擎。文章分析了遥感领域对自监督预训练的三大独特挑战:多源异构性、地理空间约束和时空动态性,并提出了针对性解决方案:掩码自编码(MAE)技术及其演进、地理对比学习与多模态融合、位置感知预训练与多任务学习。

panshengwu的博客 842

Agentic AI上下文工程架构终极指南:全面解决智能体理解问题

在开始架构设计前,我们需要先明确两个核心概念——Agentic AI和上下文工程。Agentic AI(智能体AI)是具备自主目标、环境交互、任务分解能力的AI系统。自主性:不需要人类逐步指令,能自己规划任务(比如“帮我订机票”→自动分解为“查航班→选座位→填信息→支付”);动态性:能根据环境变化调整行为(比如订机票时发现航班延误,自动改签到下一班);连续性:能记住历史交互(比如“上次你说喜欢靠窗位,这次帮你预留了”)。

AI开发架构师 1116

分析log的简单perl脚本01

logAsny.pl #! perl -w my $logName = "E:\\tmp\\ldfs_log\\fw_4_single_ok.log"; #my $logName = "E:\\tmp\\ldfs_log\\fw_12_single_lost.log";

muji318的专栏 396

基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计

本文介绍了基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计。该系统集成了INA219传感器和OLED显示屏,通过蓝牙实现无线数据传输和远程控制,适用于智能家居能耗监控和工业设备管理,具有成本低、精度高、功耗优化等优点。

qsc901234的博客 203

perl写日志

#!/usr/bin/perl -w sub append_log { # ###文件和行号信息 open (LOG, ">>log.txt"); # print LOG "[$0."; # print LOG __LINE__; # print LOG "]"; ###内容字段 $i=0; foreach $v

noticmp的专栏 1593

别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒

本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。

weixin_30496999的博客 669

android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测

MindSpore作为一个端边云协同的开源的全场景AI框架,今年3月份开源以来,受到了业界的广泛关注和应用,欢迎大家参与开源贡献、模型众智合作、行业创新与应用、学术合作等,贡献您在云侧、端侧 (HiMindSpore 应用程序)、边侧以及安全领域的应用案例。MindSpore与您在AI领域共同成长,让AI使能千行百业,释放出强大的生产力。本文讲述的是MindSpore对篮球运动员目标的检测应用,通...

weixin_33603813的博客 834

perl 工具小脚本

工具小脚本 #!/bin/perluseFile::Find;useLog::FileSimple;#usestrict; #usewarnings; #说明: #遍历出"/cygdrive/c/DocumentsandSettings/Administrator/" #满足"^.*\.txt$"添加文件...

weixin_33966095的博客 243

电源芯片TPS54560典型应用电路及设计详解

TPS54560 是一款配有集成型高侧 MOSFET 的 60V、5A DC-DC转换器,输入电压范围7-60V,输出电压可通过外部反馈电阻设置成略低于输入电压的任意值。**所以,**R5=31.25KΩ、R6:10KΩ(常用值)时,即可设置输出电压为 3.3V。**所以,**R5=140KΩ、R6:10KΩ(常用值)时,即可设置输出电压为12V。设计 TPS54560 的输出电压时,主要通过外部反馈电阻网络来设置输出电压。因此,输出 3.3V ,输入电压24V时推荐的电感值为 8µH 至 10µH。

weixin_42306872的博客 1万+

Perl Learning log

pop, push, shift, unshift pop和push删除/新增元素到数组末尾,返回数组最后一个元素。 shift和unshift删除/新增数组第一个元素,返回第一个元素。 splice删除并返回给定位置的元素。替换/添加新列表 foreach 控制结构 逐项遍历列表中的值,依次提取使用。 如果省略控制变量,perl会用$_。 foreach (1..10){ print "I can count to $_!\n"; } I can count to 1! ... I can co

qq_44729204的博客 178

Python 爬虫实战:社交媒体(Facebook)评论数据抓取与情感分析

在当今数字化时代,社交媒体平台如 Facebook 已成为人们日常生活中不可或缺的一部分。它不仅是人们分享生活点滴、交流思想的场所,也为企业和研究人员提供了丰富的数据资源。通过分析社交媒体上的评论数据,我们可以了解用户的情感倾向、产品反馈以及社会热点话题等。本文将详细介绍如何使用 Python 爬虫技术抓取 Facebook 上的评论数据,并进行情感分析。这不仅是一次技术实战,更是一次数据探索之旅。

yansideyucsdn的博客 671

逻辑判断1-逻辑基础知识

判断推理学习笔记

小y的学习笔记 2132

[Perl]用log4perl记录日志

logger 是用于产生日志的对象,其中三个重要的属性: 1. Levels:用于定义日志内容的优先级,包括DEBUG, INFO, WARN, ERROR, FATAL; 2. Categories: 用于定义是日志来自系统的那一部分; 3. Appenders:用于说明你的日志输出到哪里; 4. Layout: 用来格式化每天输出日志的格式; 下面这个例子说明了该如何初始化、

摇曳的哥 1012

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

perl 使用Log::Log4perl输出日志

code example: use Log::Log4perl qw(:easy); Log::Log4perl->easy_init($DEBUG); //定义输出级别 Log::Log4perl::init("/path/log4perl.conf"); //定义配置文件 my $logger = Log::Log4perl->get_logger("eventname"); //定义

jophyyao 3167

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

perl的Sys::Syslog模块(openlog,syslog,closelog函数,setlogsock)-自定义日志

perl的Sys::Syslog模块(openlog,syslog,closelog函数,setlogsock)-自定义日志 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&amp;uid=30572348&amp;id=5603558   自定义日志模块(Sys::Syslog)1、语法:use Sys::Syslog;          ...

weixin_34290631的博客 802

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

perl 安装LOG4perl 模块

环境信息 ubuntu 12.04 64位 桌面版 Log-Log4perl 的介绍网址:http://search.cpan.org/~mschilli/Log-Log4perl-1.49/lib/Log/Log4perl.pm 下载链接 wget http://search.cpan.org/CPAN/authors/id/M/MS/MSCHILLI/Log-Log4perl...

weixin_30621711的博客 495

Perl模块的安装、卸载以及检查已安装的模块

How do I install Perl modules? installing a new module can be as simple as typing perl -MCPAN -e 'installChocolate::Belgian'. The CPAN.pm documentation has more completeinstructions on how to use

anddyhua's Cookbook 1万+

如何安装perl模块

如何安装perl模块 2010-06-28 星期一 暴雨 运行perl脚本时,经常会发现如下类似的错误: forrest@forrest-desktop:~/study/perl/log4perl$ ./logToScreen.pl Can't locate Log/Log4perl.pm in @INC (@INC contains: /etc/perl /usr/local/...

arganzheng的专栏 275

Perl: 同时在屏幕和文件打印输出

Perl 代码实现: #!/usr/bin/perl use strict; use warnings; use diagnostics; open(LOG, '>', 'LOG_FILE') or die "Can't redirect stdout: $!"; open(CMD, 'ls |'); open(STDERR, '>&', STDOUT) or die "Can't redi

davidliu007的专栏 8891

perl使用xml::simple来读写xml

  一 读xml 1)xml实例 &lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;employees&gt;   &lt;employee age = "30"&gt;    &lt;name&gt;linux&lt;/name&gt;    &lt;country&gt;US&lt;/c

weixin_34334744的博客 219

perl里面对子函数的引用

perl里面,对于变量 / 容器的引用,直接加一个"\"即可。但对于子函数来说,引用方式不一样,必须是前面加"\&"

u014210048的专栏 223
上一篇: Python logging
下一篇: Advanced Perl Programming 读书笔记
Bai_Yuanyong
博客等级 码龄24年 46粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值