From 9af080c351c40a4f56d37174253d33a9f4ffdb69 Mon Sep 17 00:00:00 2001 From: Michael Hendricks Date: Fri, 2 Mar 2012 12:31:16 -0700 Subject: Reopen debug.log on SIGHUP The best log rotation method formerly available was to configure logrotate with the copytruncate option. As described in the logrotate documentation, "there is a very small time slice between copying the file and truncating it, so some logging data might be lost". By sending SIGHUP to the server process, one can now reopen the debug log file without losing any data. --- src/init.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src/init.cpp') diff --git a/src/init.cpp b/src/init.cpp index b027a53d8..726950bdb 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -80,6 +80,10 @@ void HandleSIGTERM(int) fRequestShutdown = true; } +void HandleSIGHUP(int) +{ + fReopenDebugLog = true; +} @@ -285,7 +289,13 @@ bool AppInit2() sa.sa_flags = 0; sigaction(SIGTERM, &sa, NULL); sigaction(SIGINT, &sa, NULL); - sigaction(SIGHUP, &sa, NULL); + + // Reopen debug.log on SIGHUP + struct sigaction sa_hup; + sa_hup.sa_handler = HandleSIGHUP; + sigemptyset(&sa_hup.sa_mask); + sa_hup.sa_flags = 0; + sigaction(SIGHUP, &sa_hup, NULL); #endif fTestNet = GetBoolArg("-testnet"); -- cgit v1.2.3