From e9ec8df7db0a2473a93b8a876bd79f524f56051d Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Tue, 18 Jul 2023 15:51:40 +0100 Subject: [PATCH 1/2] Allow `new shared FileLogger()` --- std/logger/filelogger.d | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/std/logger/filelogger.d b/std/logger/filelogger.d index c662ca74e30..5bb75313ffb 100644 --- a/std/logger/filelogger.d +++ b/std/logger/filelogger.d @@ -37,7 +37,7 @@ class FileLogger : Logger auto l3 = new FileLogger("logFile", LogLevel.fatal, CreateFolder.yes); ------------- */ - this(const string fn, const LogLevel lv = LogLevel.all) @safe + this(this This)(const string fn, const LogLevel lv = LogLevel.all) { this(fn, lv, CreateFolder.yes); } @@ -63,7 +63,7 @@ class FileLogger : Logger auto l2 = new FileLogger(file, LogLevel.fatal); ------------- */ - this(const string fn, const LogLevel lv, CreateFolder createFileNameFolder) @safe + this(this This)(const string fn, const LogLevel lv, CreateFolder createFileNameFolder) { import std.file : exists, mkdirRecurse; import std.path : dirName; @@ -80,7 +80,10 @@ class FileLogger : Logger " created in '", d,"' could not be created.")); } - this.file_.open(this.filename, "a"); + static if (is(This == shared)) + () @trusted { (cast() this.file_).open(this.filename, "a"); }(); + else + this.file_.open(this.filename, "a"); } /** A constructor for the `FileLogger` Logger that takes a reference to @@ -270,3 +273,12 @@ class FileLogger : Logger assert(tl !is null); stdThreadLocalLog.logLevel = LogLevel.all; } + +@safe unittest +{ + // we don't need to actually run the code, only make sure + // it compiles + static _() { + auto l = new shared FileLogger(""); + } +} From d0383551c894609b8d5e45bb9aa8679a12ea49d9 Mon Sep 17 00:00:00 2001 From: Atila Neves Date: Wed, 19 Jul 2023 14:49:34 +0100 Subject: [PATCH 2/2] Address review comment --- std/logger/filelogger.d | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/std/logger/filelogger.d b/std/logger/filelogger.d index 5bb75313ffb..67203286472 100644 --- a/std/logger/filelogger.d +++ b/std/logger/filelogger.d @@ -80,10 +80,7 @@ class FileLogger : Logger " created in '", d,"' could not be created.")); } - static if (is(This == shared)) - () @trusted { (cast() this.file_).open(this.filename, "a"); }(); - else - this.file_.open(this.filename, "a"); + () @trusted { (cast() this.file_).open(this.filename, "a"); }(); } /** A constructor for the `FileLogger` Logger that takes a reference to