启动我的时候http server
我不想看到>> Dancer2 v0.201000 server <pid> listening on http://0.0.0.0:<port>
印在上面stderr
。那就是为什么我在致电之前添加了以下行start()
get "/pwd" => sub {
my $pwd = cwd;
print STDERR "\n\n[PWD] : $pwd\n"; # this line is not being printed
print "\n\n[STDOUT::PWD] : $pwd\n";
my %responseHash = ( pwd => $pwd );
my $response = encode_json \%responseHash;
return $response;
};
my $dancerStartErr;
sub startServer {
open (local *STDERR, ">", \$dancerStartErr)
or die "Dup err to variable error: $!\n";
start();
}
startServer();
问题是,以后我无法在上打印某些内容STERR
。如何重新打开STDERR
(open(STDERR, ">", \*STDERR);
无济于事)?
如果您不希望应用程序记录任何内容,则可以将记录引擎更改为使用Dancer2 :: Logger :: Null。您可以通过编辑config.yml或在其中一种环境中进行操作。例如,要在生产中将其关闭,请更改#appdir / environments / production.yml。
logger: 'null'
默认值为日志记录引擎'console'
,它将内容打印到终端。
还有其他Dancer2 :: Logger ::类可与Dancer2捆绑在一起,并在自己的发行版中位于CPAN上。仅将所有内容转储到黑洞中的更好解决方案可能是登录到文件。可以在Dancer2 :: Core :: Role :: Logger中找到有关如何进一步配置的文档。
还要注意STDERR
,您应该在适当的日志级别使用日志记录关键字,而不是在代码中打印到。
print STDERR "\n\n[PWD] : $pwd\n"; # this line is not being printed
这不是一个好主意,因为您无法区分这是错误,警告还是调试输出。这就是为什么Dancer2内置了不同的日志级别的原因。
core
debug
info
warning
error
所有这些都可以用作关键字。在Dancer2 :: Manual中有关于它的文档。
由于工作目录可能与生产无关,而仅与开发相关,因此请使用debug
。
debug "[PWD] : $pwd";
而已。它会自动处理换行符,并自动为您处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句