From 3d3e84a8a471cfab24b8b36a222aa644fb93b791 Mon Sep 17 00:00:00 2001 From: Alexander Zhirov Date: Tue, 6 Jan 2026 10:55:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D1=83=D0=BB=D1=8C=20logger=20=D0=B4=D0=BB=D1=8F=20=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B6=D1=83=D1=80=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ncui/lib/logger.d | 46 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 source/ncui/lib/logger.d diff --git a/source/ncui/lib/logger.d b/source/ncui/lib/logger.d new file mode 100644 index 0000000..30ad582 --- /dev/null +++ b/source/ncui/lib/logger.d @@ -0,0 +1,46 @@ +module ncui.lib.logger; + +import std.stdio : stderr; +import std.logger : MultiLogger, sharedLog, FileLogger; +public import std.logger : LogLevel, + trace, tracef, + info, infof, + warning, warningf, + error, errorf, + critical, criticalf, + fatal, fatalf; + +void setLogLevel(int verbose = LogLevel.all, string logfile = string.init) +{ + LogLevel level = LogLevel.off; + + switch (verbose) + { + case 0: + level = LogLevel.off; + break; + case 1: + level = LogLevel.error; + break; + case 2: + level = LogLevel.warning; + break; + case 3: + level = LogLevel.info; + break; + case 4: + level = LogLevel.trace; + break; + default: + level = LogLevel.all; + } + + auto multi = new MultiLogger(level); + sharedLog = cast(shared) multi; + + if (logfile.length > 0) + { + multi.insertLogger("file", new FileLogger(logfile)); + } + multi.insertLogger("stderr", new FileLogger(stderr)); +}