upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/util.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.h')
-rw-r--r--src/util.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/util.h b/src/util.h
index d72518b..f2ea23f 100644
--- a/src/util.h
+++ b/src/util.h
@@ -87,6 +87,11 @@ inline T& REF(const T& val)
87 87
88extern bool fDebug; 88extern bool fDebug;
89 89
90// debug.log is rolled to debug.log.old once it grows past this many bytes
91// (set from -maxdebugfilesize, in MB; 0 disables the check). See the roll
92// site in OutputDebugStringF() below.
93extern int64 nMaxDebugFileSize;
94
90// --------------------------------------------------------------------------- 95// ---------------------------------------------------------------------------
91// Categorized, burst-collapsing logging 96// Categorized, burst-collapsing logging
92// 97//
@@ -391,6 +396,30 @@ inline int OutputDebugStringF(const char* pszFormat, ...)
391 strDebugFile = "debug.log"; 396 strDebugFile = "debug.log";
392 } 397 }
393 FILE* fileout = fopen(strDebugFile.c_str(), "a"); 398 FILE* fileout = fopen(strDebugFile.c_str(), "a");
399 if (fileout && nMaxDebugFileSize > 0)
400 {
401 // Roll an overgrown debug.log before adding to it. Nothing in the
402 // tree shrinks this file once the process is running (there is no
403 // ShrinkDebugFile, and even Bitcoin's only ran at startup), so a
404 // node that stays up for months grows the log without bound --
405 // production hit ~2 GiB. The file is opened and closed per line,
406 // so a rename is safe here: the next line simply reopens the
407 // path. One generation is kept as debug.log.old; logrotate
408 // (contrib/logrotate/) handles anything longer-term.
409 int nSize = GetFilesize(fileout);
410 if (nSize >= 0 && (int64)nSize > nMaxDebugFileSize)
411 {
412 fclose(fileout);
413 string strOldFile = strDebugFile + ".old";
414 remove(strOldFile.c_str()); // rename() won't clobber on Windows
415 rename(strDebugFile.c_str(), strOldFile.c_str());
416 fileout = fopen(strDebugFile.c_str(), "a");
417 if (fileout)
418 fprintf(fileout,
419 "debug.log grew past %lld MB; previous contents moved to debug.log.old (-maxdebugfilesize)\n",
420 (long long)(nMaxDebugFileSize / 1024 / 1024));
421 }
422 }
394 if (fileout) 423 if (fileout)
395 { 424 {
396 va_list arg_ptr; 425 va_list arg_ptr;