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}; }
相关推荐
PotPlayer自用皮肤
自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。
Perl学习笔记(2)
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font
2-shell及常用命令-续.pdf
2-shell及常用命令-续.pdf
Perl 记录日志
写程序时,打印日志是非常好的习惯,对我们排错,查问题非常有用.平时我们喜欢自己写个函数来处理日志,要么直接 print .在 Perl 中有个专门处理日志的模块叫 Log::Log4perl 这个是个重量级的家伙,所以不喜欢,配置的可读性也不怎么样. 但他和操作系统一样,提供了几个级别的日志 FATAL, ERROR, WARN, INFO,DEBUG, TRACE 几个日志级别给我们使用,
遥感大模型核心技术之自监督预训练技术研究(2025年9月版)
本文系统探讨了自监督预训练技术在遥感大模型构建中的核心作用。随着遥感数据进入"大数据"时代,传统监督学习面临"数据丰富、标签贫乏"的瓶颈,而自监督预训练通过设计代理任务从无标签数据中学习特征表示,成为驱动大模型发展的关键引擎。文章分析了遥感领域对自监督预训练的三大独特挑战:多源异构性、地理空间约束和时空动态性,并提出了针对性解决方案:掩码自编码(MAE)技术及其演进、地理对比学习与多模态融合、位置感知预训练与多任务学习。
Agentic AI上下文工程架构终极指南:全面解决智能体理解问题
在开始架构设计前,我们需要先明确两个核心概念——Agentic AI和上下文工程。Agentic AI(智能体AI)是具备自主目标、环境交互、任务分解能力的AI系统。自主性:不需要人类逐步指令,能自己规划任务(比如“帮我订机票”→自动分解为“查航班→选座位→填信息→支付”);动态性:能根据环境变化调整行为(比如订机票时发现航班延误,自动改签到下一班);连续性:能记住历史交互(比如“上次你说喜欢靠窗位,这次帮你预留了”)。
分析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";
基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计
本文介绍了基于ESP32-WROOM的智能蓝牙电压电流监测与远程控制系统设计。该系统集成了INA219传感器和OLED显示屏,通过蓝牙实现无线数据传输和远程控制,适用于智能家居能耗监控和工业设备管理,具有成本低、精度高、功耗优化等优点。
perl写日志
#!/usr/bin/perl -w sub append_log { # ###文件和行号信息 open (LOG, ">>log.txt"); # print LOG "[$0."; # print LOG __LINE__; # print LOG "]"; ###内容字段 $i=0; foreach $v
别再乱点U盘里的.exe了!手把手教你彻底清除那个伪装成Usb Disk的蠕虫病毒
本文详细介绍了如何识别、清除和预防伪装成Usb Disk的蠕虫病毒。从识别感染迹象到安全备份文件,再到深度清理病毒残留和构建防护策略,提供了一套完整的U盘病毒解决方案。特别提醒用户注意U盘病毒的风险,并养成良好的使用习惯。
android 运动目标检测_MindSpore应用案例:AI对篮球运动员目标的检测
MindSpore作为一个端边云协同的开源的全场景AI框架,今年3月份开源以来,受到了业界的广泛关注和应用,欢迎大家参与开源贡献、模型众智合作、行业创新与应用、学术合作等,贡献您在云侧、端侧 (HiMindSpore 应用程序)、边侧以及安全领域的应用案例。MindSpore与您在AI领域共同成长,让AI使能千行百业,释放出强大的生产力。本文讲述的是MindSpore对篮球运动员目标的检测应用,通...
perl 工具小脚本
工具小脚本 #!/bin/perluseFile::Find;useLog::FileSimple;#usestrict; #usewarnings; #说明: #遍历出"/cygdrive/c/DocumentsandSettings/Administrator/" #满足"^.*\.txt$"添加文件...
电源芯片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。
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
Python 爬虫实战:社交媒体(Facebook)评论数据抓取与情感分析
在当今数字化时代,社交媒体平台如 Facebook 已成为人们日常生活中不可或缺的一部分。它不仅是人们分享生活点滴、交流思想的场所,也为企业和研究人员提供了丰富的数据资源。通过分析社交媒体上的评论数据,我们可以了解用户的情感倾向、产品反馈以及社会热点话题等。本文将详细介绍如何使用 Python 爬虫技术抓取 Facebook 上的评论数据,并进行情感分析。这不仅是一次技术实战,更是一次数据探索之旅。
逻辑判断1-逻辑基础知识
判断推理学习笔记
[Perl]用log4perl记录日志
logger 是用于产生日志的对象,其中三个重要的属性: 1. Levels:用于定义日志内容的优先级,包括DEBUG, INFO, WARN, ERROR, FATAL; 2. Categories: 用于定义是日志来自系统的那一部分; 3. Appenders:用于说明你的日志输出到哪里; 4. Layout: 用来格式化每天输出日志的格式; 下面这个例子说明了该如何初始化、
霍尼韦尔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"); //定义
文档:亲测可用解决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&uid=30572348&id=5603558 自定义日志模块(Sys::Syslog)1、语法:use Sys::Syslog; ...
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...
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
如何安装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/...
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
perl使用xml::simple来读写xml
一 读xml 1)xml实例 <?xml version="1.0" encoding="UTF-8"?><employees> <employee age = "30"> <name>linux</name> <country>US</c
perl里面对子函数的引用
perl里面,对于变量 / 容器的引用,直接加一个"\"即可。但对于子函数来说,引用方式不一样,必须是前面加"\&"
2234



被折叠的 条评论
为什么被折叠?



