Dancer app如何处理HUP信号以关闭/重新打开日志文件

时间:2013-05-30 04:39:00

标签: dancer logrotate starman

我用日志配置写了一个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中添加postrotate以发送 HUP 并使用

处理bin/app.pl中的HUP sinal

舞者::记录器::文件::初始化;

但没有任何帮助。

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

1 个答案:

答案 0 :(得分:0)

让这种情况发生的一个解决方案是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

检查更改