我想使用perl脚本生成一个包含时间的日志文件。我能够生成一个日志文件,其中包含我想要打印的所有日志。但是问题正在发生,因为我在生成日志时无法找到以及执行过程需要多长时间。
我的日志文件打印在以下行:
添加错误ou = People,dc = egi,dc = example,dc = com:错误代码68.添加的错误为uid = Tanushree8,ou =,dc = example,dc = com:错误代码34。为id = Tanushree44,ou = People,dc = example,dc = com:错误代码68添加时出错。
我想打印错误生成的时间以及日志。请指教。
答案 0 :(得分:5)
如果您只想将日期时间添加到现有代码中:
use POSIX qw/strftime/;
my $msg = 'Hello World!';
sprintf(
"%s %s",
strftime("%F %H:%M:%S", localtime),
$msg
);
print "$msg\n"
或者......您可以在CPAN上使用众多与日志相关的模块之一。
我目前正在使用Log :: Any作为项目。
a)创建一个初始化记录器的包
package MyApp::InitLogger;
use strict;
use warnings;
use feature qw/ say /;
use Log::Any::Adapter;
use Log::Dispatch;
use POSIX qw/strftime/;
my $log_file = '/var/log/myapp.log';
my $log = Log::Dispatch->new(
outputs => [
[
'Screen',
name => 'screen',
min_level => 'debug',
newline => 1
],
[
'File',
filename => $log_file,
min_level => 'debug',
newline => 1,
mode => 'append'
]
],
callbacks => [
sub {
my %msg = @_;
return sprintf(
"%s %d %s",
strftime("%F %H:%M:%S", localtime),
$$,
$msg{message}
);
}
]
);
Log::Any::Adapter->set( 'Dispatch', dispatcher => $log );
1;
b)您想要记录某事的地方
use MyApp::InitLogger;
use Log::Any qw/$log/;
$log->debug('hello world');