diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2012-05-21 10:04:26 -0700 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2012-05-21 10:04:26 -0700 |
commit | 63407fd6e29b29ee56c572d4c6789c3f305990fc (patch) | |
tree | 01b23cb06beddaf4fd8e0ba62a2cccef318b5b1f /src | |
parent | bc5053d93e12cbde18573a0c3ef1fbd2857cb566 (diff) | |
parent | 9af080c351c40a4f56d37174253d33a9f4ffdb69 (diff) |
Merge pull request #917 from mndrix/reopen-log-file
Reopen log file on SIGHUP
Diffstat (limited to 'src')
-rw-r--r-- | src/init.cpp | 12 | ||||
-rw-r--r-- | src/util.cpp | 12 | ||||
-rw-r--r-- | src/util.h | 1 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/init.cpp b/src/init.cpp index 4e193ffe3c..325f8e0c50 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -82,6 +82,10 @@ void HandleSIGTERM(int) fRequestShutdown = true; } +void HandleSIGHUP(int) +{ + fReopenDebugLog = true; +} @@ -291,7 +295,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"); diff --git a/src/util.cpp b/src/util.cpp index a82625c84d..9e7a8c0348 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -25,6 +25,7 @@ namespace boost { #include <boost/filesystem.hpp> #include <boost/filesystem/fstream.hpp> #include <boost/foreach.hpp> +#include <boost/thread.hpp> #include <openssl/crypto.h> #include <openssl/rand.h> #include <stdarg.h> @@ -69,6 +70,7 @@ bool fTestNet = false; bool fNoListen = false; bool fLogTimestamps = false; CMedianFilter<int64> vTimeOffsets(200,0); +bool fReopenDebugLog = false; // Init openssl library multithreading support static CCriticalSection** ppmutexOpenSSL; @@ -207,6 +209,16 @@ inline int OutputDebugStringF(const char* pszFormat, ...) if (fileout) { static bool fStartedNewLine = true; + static boost::mutex mutexDebugLog; + boost::mutex::scoped_lock scoped_lock(mutexDebugLog); + + // reopen the log file, if requested + if (fReopenDebugLog) { + fReopenDebugLog = false; + boost::filesystem::path pathDebug = GetDataDir() / "debug.log"; + if (freopen(pathDebug.string().c_str(),"a",fileout) != NULL) + setbuf(fileout, NULL); // unbuffered + } // Debug print useful for profiling if (fLogTimestamps && fStartedNewLine) diff --git a/src/util.h b/src/util.h index fde695d123..47065d8426 100644 --- a/src/util.h +++ b/src/util.h @@ -116,6 +116,7 @@ extern std::string strMiscWarning; extern bool fTestNet; extern bool fNoListen; extern bool fLogTimestamps; +extern bool fReopenDebugLog; void RandAddSeed(); void RandAddSeedPerfmon(); |