upleb.uk

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

summaryrefslogtreecommitdiff
path: root/src/main_gui.cpp
diff options
context:
space:
mode:
authorbitflash-maintainer <noreply@bitflash.invalid>2026-09-02 05:26:51 +0000
committerbitflash-maintainer <noreply@bitflash.invalid>2026-09-02 05:26:51 +0000
commitae1c6a7b49d9b4f8cf7218c0baec84f348eb5ef6 (patch)
treec8444d683f25d54135d5026eca4c677f24b7ab41 /src/main_gui.cpp
parente4f898c4a6b9900553c64b9804889b5fdae3e55f (diff)
log: cap debug.log in-process, and ship a logrotate policy
debug.log grew without bound (production: 1.95 GiB, 51-129 MB/day). Nothing shrank it once the process was up -- there is no ShrinkDebugFile in this tree, and upstream's only ran at startup. OutputDebugStringF now rolls the file to debug.log.old when it passes -maxdebugfilesize (MB, default 1024, 0 disables). The write path already opens and closes the file per line under one lock, so the rename-and-reopen is a few lines inside that lock and no fd can be stranded mid-roll. contrib/logrotate/bitflash-debug.logrotate is the longer-term policy (size 1G, rotate 4, compress, missingok, notifempty, copytruncate); copytruncate keeps the writer's append handle valid across rotation. Closes #34
Diffstat (limited to 'src/main_gui.cpp')
-rw-r--r--src/main_gui.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/main_gui.cpp b/src/main_gui.cpp
index 211e1e2..05f5ecf 100644
--- a/src/main_gui.cpp
+++ b/src/main_gui.cpp
@@ -111,6 +111,7 @@ static void PrintUsage()
111 printf(" /help, -help, --help, /?\n"); 111 printf(" /help, -help, --help, /?\n");
112 printf(" /datadir=PATH\n"); 112 printf(" /datadir=PATH\n");
113 printf(" /debug\n"); 113 printf(" /debug\n");
114 printf(" /maxdebugfilesize=N (roll debug.log at N MB, default 1024; 0 = never)\n");
114 printf(" /gen\n"); 115 printf(" /gen\n");
115 printf(" /nogui or /daemon\n"); 116 printf(" /nogui or /daemon\n");
116 printf(" /selftest=wallet-keypool, wallet-hd, wallet-format, wallet-crypto, wallet-encrypt,\n"); 117 printf(" /selftest=wallet-keypool, wallet-hd, wallet-format, wallet-crypto, wallet-encrypt,\n");
@@ -191,6 +192,20 @@ static void ParseStartupArguments(int argc, char* argv[])
191 if (arg(argc,argv,"/debug") || arg(argc,argv,"-debug")) 192 if (arg(argc,argv,"/debug") || arg(argc,argv,"-debug"))
192 fDebug = true; 193 fDebug = true;
193 194
195 // /maxdebugfilesize=N -- roll debug.log to debug.log.old once it passes
196 // N MB, checked on each write. Default is 1024 (see util.cpp); 0 turns
197 // the check off and leaves rotation entirely to logrotate.
198 string strMaxDebugSize = argval2(argc, argv, "/maxdebugfilesize", "-maxdebugfilesize");
199 if (!strMaxDebugSize.empty())
200 {
201 int64 nMB = atoi64(strMaxDebugSize.c_str());
202 if (nMB < 0)
203 fprintf(stderr, "Ignoring /maxdebugfilesize=%s: not a size in MB\n",
204 strMaxDebugSize.c_str());
205 else
206 nMaxDebugFileSize = nMB * 1024 * 1024;
207 }
208
194 if (arg(argc,argv,"/gen") || arg(argc,argv,"-gen")) 209 if (arg(argc,argv,"/gen") || arg(argc,argv,"-gen"))
195 { 210 {
196 fGenerateBitcoins = 1; 211 fGenerateBitcoins = 1;