2

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

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

并开始:

plackup -E 部署 -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 以发送HUPbin/app.pl使用

Dancer::Logger::File::init;

但没有任何帮助。

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

4

1 回答 1

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

于 2013-08-23T04:27:00.760 回答