我用日志配置写了一个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
舞者::记录器::文件::初始化;
但没有任何帮助。
谁能告诉我如何旋转舞者的日志文件?
答案 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