This is an automated email from the ASF dual-hosted git repository.
freeandnil pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
The following commit(s) were added to refs/heads/master by this push:
new 79b57e5e added unit test for #193
79b57e5e is described below
commit 79b57e5eff0fb970a8d51ca35b5bf63e0b90a6df
Author: Jan Friedrich <[email protected]>
AuthorDate: Mon Oct 14 17:52:00 2024 +0200
added unit test for #193
---
src/log4net.Tests/Appender/FileAppenderTest.cs | 48 ++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/src/log4net.Tests/Appender/FileAppenderTest.cs
b/src/log4net.Tests/Appender/FileAppenderTest.cs
index ec25b33c..a36b441a 100644
--- a/src/log4net.Tests/Appender/FileAppenderTest.cs
+++ b/src/log4net.Tests/Appender/FileAppenderTest.cs
@@ -26,6 +26,9 @@ using NUnit.Framework;
using log4net.Repository;
using log4net.Config;
using log4net.Util;
+using log4net.Core;
+using System.IO;
+using System.Linq;
namespace log4net.Tests.Appender;
@@ -100,4 +103,49 @@ public sealed class FileAppenderTest
static void LogReceived(object? source, LogReceivedEventArgs e) =>
Assert.Fail(e.LogLog.Message);
}
+
+ /// <summary>
+ /// Verifies that the <see cref="FileAppender.File"/> property accepts a
<see cref="PatternString"/> with a <see cref="GlobalContext"/>
+ /// </summary>
+ /// <remarks>see
https://github.com/apache/logging-log4net/issues/193</remarks>
+ [Test]
+ public void FilenameWithGlobalContextPatternStringTest()
+ {
+ DirectoryInfo logs = new("./Logs");
+ if (logs.Exists)
+ {
+ logs.Delete(true);
+ }
+
+ XmlDocument log4netConfig = new();
+ log4netConfig.LoadXml("""
+ <log4net>
+ <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date{ABSOLUTE} [%logger] %level -
%message%newline%exception"/>
+ </layout>
+ </appender>
+ <appender name="GeneralFileAppender" type="log4net.Appender.FileAppender">
+ <file type="log4net.Util.PatternString"
value="Logs\file_%property{LogName}_%date{yyyyMMddHHmmss}.Log"/>
+ <appendToFile value="true"/>
+ <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date{ABSOLUTE} [%logger] %level -
%message%newline%exception"/>
+ </layout>
+ </appender>
+ <root>
+ <level value="INFO"/>
+ <appender-ref ref="GeneralFileAppender"/>
+ </root>
+ </log4net>
+""");
+ ILoggerRepository rep =
LogManager.CreateRepository(Guid.NewGuid().ToString());
+ // latest possible moment to set GlobalContext property used in filename
+ GlobalContext.Properties["LogName"] = "custom_log_issue_193";
+ XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
+ ILogger logger =
rep.GetLogger(nameof(FilenameWithGlobalContextPatternStringTest));
+ logger.Log(GetType(), Level.Info,
nameof(FilenameWithGlobalContextPatternStringTest), null);
+ logs.Refresh();
+ Assert.IsTrue(logs.GetFiles().Any(file =>
file.Name.StartsWith("file_custom_log_issue_193")));
+ }
}
\ No newline at end of file