记录模具并在Perl Dancer模块中发出警告

时间:2013-08-13 21:42:51

标签: perl dancer

如果说die / warn在我自己的模块中,那么想要死并警告记录到文件日志(在生产模式下)。如果在./lib/main.pm内发生死/警告,则工作正常,但如果它们出现在MyModule中则不行,在这种情况下不会发生logginc。有什么想法吗?

我正在使用的模式是:

./ LIB / main.pm:

 package main;
 use Dancer ':syntax';
 use MyModule;
 ...
 warn 'this will get logged. hurrah!';
 my $result = &MyModule::MyMethod();

./ MyModule.pm:

 package MyModule;

 ...

 sub MyMethod {
   warn 'this wont get logged for some reason. any idea why not?';
   return 'result';
 }

apache配置:

<VirtualHost *:80>
ServerName myapp.com
DocumentRoot /home/myapp/public

SetEnv DANCER_ENVIRONMENT "production"

<Directory />
SetHandler perl-script
PerlResponseHandler Plack::Handler::Apache2
PerlSetVar psgi_app /home/myapp/bin/app.pl
</Directory>

CustomLog /home/myapp/logs/access.log common
ErrorLog /home/myapp/logs/error.log

</VirtualHost>

和production.yml:

log: "warning"
logger: "file"
log_path: "/home/myapp/logs/"
warnings: 0
show_errors: 0
route_cache: 1

1 个答案:

答案 0 :(得分:1)

我很久以前就想到了这一点,我想我会回答自己的问题。

  1. 使用'警告',不要警告。

  2. 每个模块都需要使用Dancer':syntax';

  3. 所以,这将有效:

    package MyModule;
    use Dancer ':syntax';
    ...
    
    sub MyMethod {
      warning 'this will get logged with good reason. yippee!';
      return 'result';
      }