sub log_request_parameters {
my $c = shift;
my %all_params = @_;
my $copy = Clone::clone(\%all_params); # don't change the 'real' request params
# Then, do anything you want to only print what matters to you,
# for example, to hide some POST parameters:
my $body = $copy->{body} || {};
foreach my $key (keys %$body) {
$body->{$key} = '****' if $key =~ /password/;
}
return $c->SUPER::log_request_parameters( %$copy );
}
# (or a similar condition to check you are not on the production server)
if ( !__PACKAGE__->config->{dev} ) {
__PACKAGE__->log->levels( 'warn', 'error', 'fatal' ) if ref __PACKAGE__->log;
}
3条答案
按热度按时间dzhpxtsq1#
您需要的是覆盖Catalyst的
dump_these
方法。这将返回一个列表,显示在Catalyst的错误调试页面上。默认实现如下所示:
但您可以使其更具限制性,例如
您可以在应用程序的主模块中定义
dump_these
--也就是use Catalyst
所在的模块。dojqjjoe2#
我有一个类似的问题,我通过覆盖Catalyst方法
log_request_parameters
解决了这个问题。类似这样的东西(正如@mob所说,把它放在你的主模块中):
但是,如果不希望显示任何GET/POST参数,也可以在开始时返回。
ccrfmcuu3#
好吧,我没有想到更明显的解决方案,在你的情况下:您可以简单地将日志级别设置为高于
debug
的级别,这将阻止显示这些debug
日志,但会保留error
日志: