舞者应用程序如何处理HUP信号来关闭/重新打开日志文件



我写了一个Dancer应用程序,日志配置:

logger:       file
logger_format: <%T> %m
log_path:     '/usr/local/myapp/log'
log_file:     'myapp.log'
log:          debug

并以:

开头

plackup -E deployment -D -s Starman——workers=10——port 8080 -a bin/app.pl

使用logrotate

旋转日志文件
/usr/local/myapp/log/myapp.log {
    daily
    rotate 10
    create 0660 root root
    compress
    missingok
    dateext
}

但是新的日志文件是零。

我试图在logrotate conf中添加后旋转以发送HUP并在bin/app.pl中使用

处理HUP信号。

舞者:记录器::文件::init;

但是没有任何帮助。

谁能告诉我如何旋转舞者的日志文件?

让这种情况发生的一个解决方案是plackup支持-R开关来监视文件夹,因此您可以添加-R <appdir>/run,然后将logrotate更改为:

postrotate
  touch <appdir>/run/last.run

据我所知,在这个配置中无法完成您想要的。Starman显式处理sighup以重新启动子进程。从Starman/Server.pm:

24 # Override Net::Server's HUP handling - just restart all the workers and that's about it
25 sub sig_hup {
26     my $self = shift;
27     $self->hup_children;
28 }

也许你需要一个替代的日志解决方案,比如使用Dancer::Logger::Syslog

或者,如果你必须写一个文件,也许检查Linux::Inotify2

的变化。

最新更新