diff options
| author | Michael Hendricks <[email protected]> | 2012-03-02 12:31:16 -0700 |
|---|---|---|
| committer | Michael Hendricks <[email protected]> | 2012-05-18 16:20:03 -0600 |
| commit | 9af080c351c40a4f56d37174253d33a9f4ffdb69 (patch) | |
| tree | b3b9f85c0f7cbca2ca880ba36a5e4bbca8e006d0 /src/util.cpp | |
| parent | Serialize access to debug.log stream (diff) | |
| download | discoin-9af080c351c40a4f56d37174253d33a9f4ffdb69.tar.xz discoin-9af080c351c40a4f56d37174253d33a9f4ffdb69.zip | |
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.
Diffstat (limited to 'src/util.cpp')
| -rw-r--r-- | src/util.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/util.cpp b/src/util.cpp index d143306ae..e3a49dcbc 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -70,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; @@ -213,6 +214,14 @@ inline int OutputDebugStringF(const char* pszFormat, ...) 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) fprintf(fileout, "%s ", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str()); |