You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by fr...@apache.org on 2025/07/02 22:03:17 UTC
(logging-log4net) branch Feature/262-mocked-DateTimeStrategy-to-speedup-test created (now 94e7a4d6)
This is an automated email from the ASF dual-hosted git repository.
freeandnil pushed a change to branch Feature/262-mocked-DateTimeStrategy-to-speedup-test
in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
at 94e7a4d6 #250 mocked DateTimeStrategy to speedup test - added release notes - added license headers - adjusted Log4NetIntegrationTests to .editorconfig
This branch includes the following new commits:
new 94e7a4d6 #250 mocked DateTimeStrategy to speedup test - added release notes - added license headers - adjusted Log4NetIntegrationTests to .editorconfig
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(logging-log4net) 01/01: #250 mocked DateTimeStrategy to speedup test - added release notes - added license headers - adjusted Log4NetIntegrationTests to .editorconfig
Posted by fr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
freeandnil pushed a commit to branch Feature/262-mocked-DateTimeStrategy-to-speedup-test
in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
commit 94e7a4d6af0146ff571e96b1fd896f96abb9ed08
Author: Jan Friedrich <fr...@apache.org>
AuthorDate: Thu Jul 3 00:02:40 2025 +0200
#250 mocked DateTimeStrategy to speedup test
- added release notes
- added license headers
- adjusted Log4NetIntegrationTests to .editorconfig
---
src/changelog/3.2.0/.release.xml | 2 +-
.../3.2.0/250-broken-rolling-logfiles.xml | 12 +
.../Integration/Log4NetIntegrationTests.cs | 246 ++++++++++++---------
.../{NdcTest.cs => Integration/MockDateTime.cs} | 39 +---
.../Integration/log4net.no_file_name.config | 42 ++--
src/log4net.Tests/Integration/log4net.roll.config | 14 +-
src/log4net.Tests/NdcTest.cs | 14 --
src/log4net/Appender/RollingFileAppender.cs | 4 +-
src/log4net/Util/Log4NetAssert.cs | 2 +-
9 files changed, 191 insertions(+), 184 deletions(-)
diff --git a/src/changelog/3.2.0/.release.xml b/src/changelog/3.2.0/.release.xml
index aace3b6d..b1a9979b 100644
--- a/src/changelog/3.2.0/.release.xml
+++ b/src/changelog/3.2.0/.release.xml
@@ -2,5 +2,5 @@
<release xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://logging.apache.org/xml/ns"
xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
- date="2025-07-12"
+ date="2025-08-12"
version="3.2.0"/>
diff --git a/src/changelog/3.2.0/250-broken-rolling-logfiles.xml b/src/changelog/3.2.0/250-broken-rolling-logfiles.xml
new file mode 100644
index 00000000..249cfd84
--- /dev/null
+++ b/src/changelog/3.2.0/250-broken-rolling-logfiles.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://logging.apache.org/xml/ns"
+ xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
+ type="fixed">
+ <issue id="250" link="https://github.com/apache/logging-log4net/issues/250"/>
+ <issue id="257" link="https://github.com/apache/logging-log4net/pull/257"/>
+ <issue id="262" link="https://github.com/apache/logging-log4net/pull/262"/>
+ <description format="asciidoc">
+ The rolling of logfiles was fixed (reported by @maedula, fixed by @gdziadkiewicz)
+ </description>
+</entry>
\ No newline at end of file
diff --git a/src/log4net.Tests/Integration/Log4NetIntegrationTests.cs b/src/log4net.Tests/Integration/Log4NetIntegrationTests.cs
index bf29b381..9725c8eb 100644
--- a/src/log4net.Tests/Integration/Log4NetIntegrationTests.cs
+++ b/src/log4net.Tests/Integration/Log4NetIntegrationTests.cs
@@ -1,9 +1,29 @@
+#region Apache License
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to you under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#endregion
+
using System;
-using System.IO;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
-using log4net;
+using log4net.Appender;
using log4net.Config;
+using log4net.Repository;
using NUnit.Framework;
namespace log4net.Tests.Integration
@@ -13,8 +33,9 @@ namespace log4net.Tests.Integration
/// <para>
/// Expectations for test log files and directories:
/// <list type="bullet">
- /// <item>Test log files may be placed directly in the test directory with names starting with <c>TestLogFilePrefix</c>, or inside directories whose names start with <c>TestLogDirectoryPrefix</c> and may have arbitrary file names.</item>
- /// <item>Each test run starts with a clean environment: any files or directories from previous runs matching these prefixes are deleted in <c>SetUp</c>.</item>
+ /// <item>Test log files may be placed directly in the test directory with names starting with <see cref="TestLogFilePrefix"/>,
+ /// or inside directories whose names start with <see cref="TestLogDirectoryPrefix"/> and may have arbitrary file names.</item>
+ /// <item>Each test run starts with a clean environment: any files or directories from previous runs matching these prefixes are deleted in <see cref="SetUp"/>.</item>
/// <item>Tests assert the existence, count, and content of log files and directories as part of their validation.</item>
/// </list>
/// </para>
@@ -44,16 +65,16 @@ public void SetUp()
[Test]
public void Log4Net_WritesLogFile_AndContentIsCorrect()
{
- var (log, repo) = ArrangeLogger("log4net.integration.basic.config");
- log.Info("Hello integration test");
- log.Error("This is an error");
- repo.Shutdown();
+ (ILog log, ILoggerRepository repo) = ArrangeLogger("log4net.integration.basic.config");
+ log.Info("Hello integration test");
+ log.Error("This is an error");
+ repo.Shutdown();
- // Assert: log file exists and contains expected content
- string[] logLines = File.ReadAllLines("integrationTestLogFile_integration.log");
- Assert.That(logLines.Length, Is.EqualTo(2));
- Assert.That(logLines[0], Does.Contain("Hello integration test"));
- Assert.That(logLines[1], Does.Contain("This is an error"));
+ // Assert: log file exists and contains expected content
+ string[] logLines = File.ReadAllLines("integrationTestLogFile_integration.log");
+ Assert.That(logLines, Has.Length.EqualTo(2));
+ Assert.That(logLines[0], Does.Contain("Hello integration test"));
+ Assert.That(logLines[1], Does.Contain("This is an error"));
}
/// <summary>
@@ -67,21 +88,21 @@ public void Log4Net_WritesLogFile_AndContentIsCorrect()
[Test]
public void Log4Net_WritesLogFile_AndContentIsCorrectAfterRestart()
{
- for (int i = 0; i < 10; i++)
- {
- var (log, repo) = ArrangeLogger("log4net.integration.basic.config");
- log.Info("Hello integration test");
- log.Error("This is an error");
- repo.Shutdown();
- }
- // Assert: log file exists and contains expected content
- string[] logLines = File.ReadAllLines("integrationTestLogFile_integration.log");
- Assert.That(logLines.Length, Is.EqualTo(20));
- for (int i = 0; i < 10; i++)
- {
- Assert.That(logLines[i * 2], Does.Contain("Hello integration test"));
- Assert.That(logLines[i * 2 + 1], Does.Contain("This is an error"));
- }
+ for (int i = 0; i < 10; i++)
+ {
+ (ILog log, ILoggerRepository repo) = ArrangeLogger("log4net.integration.basic.config");
+ log.Info("Hello integration test");
+ log.Error("This is an error");
+ repo.Shutdown();
+ }
+ // Assert: log file exists and contains expected content
+ string[] logLines = File.ReadAllLines("integrationTestLogFile_integration.log");
+ Assert.That(logLines, Has.Length.EqualTo(20));
+ for (int i = 0; i < 10; i++)
+ {
+ Assert.That(logLines[i * 2], Does.Contain("Hello integration test"));
+ Assert.That(logLines[i * 2 + 1], Does.Contain("This is an error"));
+ }
}
/// <summary>
@@ -96,18 +117,18 @@ public void Log4Net_WritesLogFile_AndContentIsCorrectAfterRestart()
[Test]
public void Log4Net_WritesLogFile_WithRollAndNoAppend_AndContentIsCorrectAfterRestart()
{
- for (int i = 0; i < 20; i++)
+ for (int i = 0; i < 20; i++)
+ {
+ (ILog log, ILoggerRepository repo) = ArrangeLogger("log4net.roll.config");
+ for (int j = 0; j < 10; ++j)
{
- var (log, repo) = ArrangeLogger("log4net.roll.config");
- for (int j = 0; j < 10; ++j)
- {
- log.Info($"Hello, log4net! {i} {j}");
- }
- repo.Shutdown();
+ log.Info($"Hello, log4net! {i} {j}");
}
- // Assert: log file exists and contains expected content
- string[] logFiles = Directory.GetFiles("integrationTestLogDir_roll");
- Assert.That(logFiles.Length, Is.EqualTo(12 + 1));
+ repo.Shutdown();
+ }
+ // Assert: log file exists and contains expected content
+ string[] logFiles = Directory.GetFiles("integrationTestLogDir_roll");
+ Assert.That(logFiles, Has.Length.EqualTo(12 + 1));
}
/// <summary>
@@ -122,21 +143,19 @@ public void Log4Net_WritesLogFile_WithRollAndNoAppend_AndContentIsCorrectAfterRe
[Test]
public void Log4Net_WritesLogFile_WithMaxSizeRoll_Config_Works()
{
- string logDir = Path.Combine(TestContext.CurrentContext.TestDirectory, "integrationTestLogDir_maxsizeroll");
- if (Directory.Exists(logDir)) Directory.Delete(logDir, true);
- Directory.CreateDirectory(logDir);
- var (log, repo) = ArrangeLogger("log4net.maxsizeroll.config");
- for (int i = 0; i < 1000; ++i)
- {
- log.Info($"Log entry {i}");
- }
- repo.Shutdown();
- // Assert: rolled files exist
- string[] logFiles = Directory.GetFiles(logDir, "*.log");
- Assert.That(logFiles.Length, Is.EqualTo(4)); // 1 current + 3 backups
- // Optionally, check that each file is <= 10KB
- foreach (var file in logFiles)
- Assert.That(new FileInfo(file).Length, Is.LessThanOrEqualTo(10 * 1024 + 100));
+ DirectoryInfo logDir = CreateLogDirectory("integrationTestLogDir_maxsizeroll");
+ (ILog log, ILoggerRepository repo) = ArrangeLogger("log4net.maxsizeroll.config");
+ for (int i = 0; i < 1000; ++i)
+ {
+ log.Info($"Log entry {i}");
+ }
+ repo.Shutdown();
+ // Assert: rolled files exist
+ FileInfo[] logFiles = logDir.GetFiles("*.log");
+ Assert.That(logFiles, Has.Length.EqualTo(4)); // 1 current + 3 backups
+ // Check that each file is <= 10KB
+ foreach (FileInfo file in logFiles)
+ Assert.That(file.Length, Is.LessThanOrEqualTo(10 * 1024 + 100));
}
/// <summary>
@@ -152,32 +171,35 @@ public void Log4Net_WritesLogFile_WithMaxSizeRoll_Config_Works()
[Test]
public void Log4Net_WritesLogFile_WithDateAndSizeRoll_Config_Works()
{
- string logDir = Path.Combine(TestContext.CurrentContext.TestDirectory, "integrationTestLogDir_maxsizerolldate");
- if (Directory.Exists(logDir)) Directory.Delete(logDir, true);
- Directory.CreateDirectory(logDir);
- var (log, repo) = ArrangeLogger("log4net.maxsizeroll_date.config");
- // Write enough lines to trigger rolling by size and date
- for (int i = 1; i < 10000; ++i)
- {
- log.Debug($"DateRoll entry {i}");
- if (i % 5000 == 0) System.Threading.Thread.Sleep(TimeSpan.FromMinutes(1)); // allow time for date to change if needed
- }
- repo.Shutdown();
- // Assert: rolled files exist (date+size pattern)
- string[] logFiles = Directory.GetFiles(logDir, "*.log");
- Assert.That(logFiles.Length, Is.EqualTo(8));
- // Group files by date part in the filename (yyyy-MM-dd-mm)
- var dateGroups = logFiles
- .Select(f => Path.GetFileNameWithoutExtension(f))
- .Select(name => name.Split('.').First())
- .GroupBy(date => date)
- .ToDictionary(g => g.Key, g => g.Count());
- // Assert that at least one group exists and print group counts
- Assert.That(dateGroups.Count, Is.EqualTo(2));
- foreach (var group in dateGroups)
+ DirectoryInfo logDir = CreateLogDirectory("integrationTestLogDir_maxsizerolldate");
+ (ILog log, ILoggerRepository repo) = ArrangeLogger("log4net.maxsizeroll_date.config");
+ MockDateTime mockDateTime = new();
+ repo.GetAppenders().OfType<RollingFileAppender>().First().DateTimeStrategy = mockDateTime;
+ // Write enough lines to trigger rolling by size and date
+ for (int i = 1; i < 10000; ++i)
+ {
+ log.Debug($"DateRoll entry {i}");
+ if (i % 5000 == 0)
{
- TestContext.Out.WriteLine($"Date group: {group.Key}, file count: {group.Value}");
+ mockDateTime.Offset = TimeSpan.FromMinutes(1); // allow time for date to change if needed
}
+ }
+ repo.Shutdown();
+ // Assert: rolled files exist (date+size pattern)
+ FileInfo[] logFiles = logDir.GetFiles("*.log");
+ Assert.That(logFiles, Has.Length.EqualTo(8));
+ // Group files by date part in the filename (yyyy-MM-dd-mm)
+ Dictionary<string, int> dateGroups = logFiles
+ .Select(f => Path.GetFileNameWithoutExtension(f.Name))
+ .Select(name => name.Split('.').First())
+ .GroupBy(date => date)
+ .ToDictionary(g => g.Key, g => g.Count());
+ // Assert that at least one group exists and print group counts
+ Assert.That(dateGroups, Has.Count.EqualTo(2));
+ foreach (KeyValuePair<string, int> group in dateGroups)
+ {
+ TestContext.Out.WriteLine($"Date group: {group.Key}, file count: {group.Value}");
+ }
}
/// <summary>
@@ -192,20 +214,28 @@ public void Log4Net_WritesLogFile_WithDateAndSizeRoll_Config_Works()
[Test]
public void Log4Net_ConfigWithoutFileName_CreatesOneFile()
{
- string logDir = Path.Combine(TestContext.CurrentContext.TestDirectory, "integrationTestLogDir_no_file_name");
- if (Directory.Exists(logDir)) Directory.Delete(logDir, true);
- Directory.CreateDirectory(logDir);
- var (log, repo) = ArrangeLogger("log4net.no_file_name.config");
- log.Info("Test entry with no file name");
- repo.Shutdown();
- // Assert: exactly one log file was created in the directory
- var files = Directory.GetFiles(logDir, "*", SearchOption.AllDirectories);
- Assert.That(files.Length, Is.EqualTo(1), "Should create exactly one log file");
- var fileName = Path.GetFileName(files[0]);
- TestContext.Out.WriteLine($"Created file: {fileName}");
- // Assert the file name matches the date pattern yyyy-MM-dd.log
- string todayPattern = DateTime.Now.ToString("yyyy-MM-dd") + ".log";
- Assert.That(fileName, Is.EqualTo(todayPattern), $"File name should match pattern: {todayPattern}");
+ DirectoryInfo logDir = CreateLogDirectory("integrationTestLogDir_no_file_name");
+ (ILog log, ILoggerRepository repo) = ArrangeLogger("log4net.no_file_name.config");
+ log.Info("Test entry with no file name");
+ repo.Shutdown();
+ // Assert: exactly one log file was created in the directory
+ FileInfo[] files = logDir.GetFiles("*", SearchOption.AllDirectories);
+ Assert.That(files, Has.Length.EqualTo(1), "Should create exactly one log file");
+ TestContext.Out.WriteLine($"Created file: {files[0].Name}");
+ // Assert the file name matches the date pattern yyyy-MM-dd.log
+ string todayPattern = DateTime.Now.ToString("yyyy-MM-dd") + ".log";
+ Assert.That(files[0].Name, Is.EqualTo(todayPattern), $"File name should match pattern: {todayPattern}");
+ }
+
+ private static DirectoryInfo CreateLogDirectory(string name)
+ {
+ DirectoryInfo logDir = new(Path.Combine(TestContext.CurrentContext.TestDirectory, name));
+ if (logDir.Exists)
+ {
+ logDir.Delete(true);
+ }
+ logDir.Create();
+ return logDir;
}
private const string TestLogFilePrefix = "integrationTestLogFile";
@@ -213,32 +243,32 @@ public void Log4Net_ConfigWithoutFileName_CreatesOneFile()
private static void RemoveDirsFromPreviousRuns()
{
- List<string> directoriesFromPreviousRuns =
- Directory.EnumerateDirectories(TestContext.CurrentContext.TestDirectory)
- .Where(dirPath => Path.GetFileName(dirPath).StartsWith(TestLogDirectoryPrefix, StringComparison.InvariantCultureIgnoreCase))
- .ToList();
- directoriesFromPreviousRuns.ForEach(d => Directory.Delete(d, true));
+ List<DirectoryInfo> directoriesFromPreviousRuns = new DirectoryInfo(TestContext.CurrentContext.TestDirectory)
+ .EnumerateDirectories()
+ .Where(directory => directory.Name.StartsWith(TestLogDirectoryPrefix, StringComparison.InvariantCultureIgnoreCase))
+ .ToList();
+ directoriesFromPreviousRuns.ForEach(d => d.Delete(true));
}
private static void RemoveFilesFromPreviousRuns()
{
- List<string> filesFromPreviousRuns =
- Directory.EnumerateFiles(TestContext.CurrentContext.TestDirectory)
- .Where(filePath => Path.GetFileName(filePath).StartsWith(TestLogFilePrefix, StringComparison.InvariantCultureIgnoreCase))
- .ToList();
- filesFromPreviousRuns.ForEach(File.Delete);
+ List<FileInfo> filesFromPreviousRuns = new DirectoryInfo(TestContext.CurrentContext.TestDirectory)
+ .EnumerateFiles()
+ .Where(filePath => filePath.Name.StartsWith(TestLogFilePrefix, StringComparison.InvariantCultureIgnoreCase))
+ .ToList();
+ filesFromPreviousRuns.ForEach(file => file.Delete());
}
private static string GetConfigPath(string configFile)
=> Path.Combine(TestContext.CurrentContext.TestDirectory, "Integration", configFile);
- private static (ILog log, log4net.Repository.ILoggerRepository repo) ArrangeLogger(string configFile)
+ private static (ILog log, ILoggerRepository repo) ArrangeLogger(string configFile)
{
- string configPath = GetConfigPath(configFile);
- var repo = LogManager.CreateRepository(Guid.NewGuid().ToString());
- XmlConfigurator.Configure(repo, new FileInfo(configPath));
- var log = LogManager.GetLogger(repo.Name, "IntegrationTestLogger");
- return (log, repo);
+ string configPath = GetConfigPath(configFile);
+ ILoggerRepository repo = LogManager.CreateRepository(Guid.NewGuid().ToString());
+ XmlConfigurator.Configure(repo, new FileInfo(configPath));
+ ILog log = LogManager.GetLogger(repo.Name, "IntegrationTestLogger");
+ return (log, repo);
}
}
-}
+}
\ No newline at end of file
diff --git a/src/log4net.Tests/NdcTest.cs b/src/log4net.Tests/Integration/MockDateTime.cs
similarity index 52%
copy from src/log4net.Tests/NdcTest.cs
copy to src/log4net.Tests/Integration/MockDateTime.cs
index ee5b14d3..b7ee01d5 100644
--- a/src/log4net.Tests/NdcTest.cs
+++ b/src/log4net.Tests/Integration/MockDateTime.cs
@@ -18,41 +18,20 @@
#endregion
using System;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Threading;
-using log4net.Config;
-using log4net.Core;
-using log4net.Layout;
-using log4net.Layout.Pattern;
-using log4net.Repository;
-using log4net.Tests.Appender;
-using log4net.Util;
-using NUnit.Framework;
+using log4net.Appender;
-namespace log4net.Tests;
+namespace log4net.Tests.Integration;
/// <summary>
-/// Used for internal unit testing the <see cref="NDC"/> class.
+/// Mock implementation of <see cref="RollingFileAppender.IDateTime"/>
/// </summary>
-[TestFixture]
-public class NdcTest
+internal class MockDateTime : RollingFileAppender.IDateTime
{
/// <summary>
- /// Test regression (https://github.com/apache/logging-log4net/issues/245)
+ /// Offset to apply to the current time.
/// </summary>
- [Test]
- public void InheritTest()
- {
- NDC.Push("first");
- NDC.Push("last");
- System.Collections.Stack context = NDC.CloneStack();
- NDC.Clear();
- NDC.Inherit(context);
- Assert.That(NDC.Pop(), Is.EqualTo("last"));
- Assert.That(NDC.Pop(), Is.EqualTo("first"));
- }
+ internal TimeSpan Offset { get; set; }
+
+ /// <inheritdoc/>
+ public DateTime Now => DateTime.Now + Offset;
}
\ No newline at end of file
diff --git a/src/log4net.Tests/Integration/log4net.no_file_name.config b/src/log4net.Tests/Integration/log4net.no_file_name.config
index d0fc0786..79ba9304 100644
--- a/src/log4net.Tests/Integration/log4net.no_file_name.config
+++ b/src/log4net.Tests/Integration/log4net.no_file_name.config
@@ -1,23 +1,23 @@
-<configuration>
- <log4net>
- <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
- <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
- <file value="integrationTestLogDir_no_file_name/"/>
- <encoding value="utf-8" />
- <datePattern value="yyyy-MM-dd'.log'"/>
- <staticLogFileName value="false"/>
- <appendToFile value="true"/>
- <rollingStyle value="Composite"/>
- <maxSizeRollBackups value="10"/>
- <maximumFileSize value="5MB"/>
- <layout type="log4net.Layout.PatternLayout">
- <conversionPattern value="%date [%property{id}] %-5level %logger - %message%newline"/>
- </layout>
- </appender>
+<configuration>
+ <log4net>
+ <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
+ <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
+ <file value="integrationTestLogDir_no_file_name/"/>
+ <encoding value="utf-8" />
+ <datePattern value="yyyy-MM-dd'.log'"/>
+ <staticLogFileName value="false"/>
+ <appendToFile value="true"/>
+ <rollingStyle value="Composite"/>
+ <maxSizeRollBackups value="10"/>
+ <maximumFileSize value="5MB"/>
+ <layout type="log4net.Layout.PatternLayout">
+ <conversionPattern value="%date [%property{id}] %-5level %logger - %message%newline"/>
+ </layout>
+ </appender>
- <logger name="IntegrationTestLogger">
- <level value="debug" />
- <appender-ref ref="LogFileAppender" />
- </logger>
- </log4net>
+ <logger name="IntegrationTestLogger">
+ <level value="debug" />
+ <appender-ref ref="LogFileAppender" />
+ </logger>
+ </log4net>
</configuration>
\ No newline at end of file
diff --git a/src/log4net.Tests/Integration/log4net.roll.config b/src/log4net.Tests/Integration/log4net.roll.config
index 15b6735d..06b4c8ea 100644
--- a/src/log4net.Tests/Integration/log4net.roll.config
+++ b/src/log4net.Tests/Integration/log4net.roll.config
@@ -1,6 +1,6 @@
-<?xml version="1.0" encoding="utf-8" ?>
+<?xml version="1.0" encoding="utf-8" ?>
<configuration>
- <log4net>
+ <log4net>
<appender name="Log"
type="log4net.Appender.RollingFileAppender">
@@ -23,9 +23,9 @@
</layout>
</appender>
- <logger name="IntegrationTestLogger">
- <level value="debug" />
- <appender-ref ref="Log" />
- </logger>
- </log4net>
+ <logger name="IntegrationTestLogger">
+ <level value="debug" />
+ <appender-ref ref="Log" />
+ </logger>
+ </log4net>
</configuration>
\ No newline at end of file
diff --git a/src/log4net.Tests/NdcTest.cs b/src/log4net.Tests/NdcTest.cs
index ee5b14d3..1b747e3b 100644
--- a/src/log4net.Tests/NdcTest.cs
+++ b/src/log4net.Tests/NdcTest.cs
@@ -17,20 +17,6 @@
//
#endregion
-using System;
-using System.Diagnostics;
-using System.Diagnostics.CodeAnalysis;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Threading;
-using log4net.Config;
-using log4net.Core;
-using log4net.Layout;
-using log4net.Layout.Pattern;
-using log4net.Repository;
-using log4net.Tests.Appender;
-using log4net.Util;
using NUnit.Framework;
namespace log4net.Tests;
diff --git a/src/log4net/Appender/RollingFileAppender.cs b/src/log4net/Appender/RollingFileAppender.cs
index 55105c9f..5e983df3 100644
--- a/src/log4net/Appender/RollingFileAppender.cs
+++ b/src/log4net/Appender/RollingFileAppender.cs
@@ -790,7 +790,7 @@ private void InitializeFromOneFile(string baseFile, string curFileName)
curFileName = curFileName.ToLowerInvariant();
baseFile = baseFile.ToLowerInvariant();
string dir = string.IsNullOrEmpty(baseFile) ? "" : Path.GetDirectoryName(baseFile);
- var baseFileWithoutExtension = Path.Combine(dir ?? "", Path.GetFileNameWithoutExtension(baseFile));
+ string baseFileWithoutExtension = Path.Combine(dir ?? "", Path.GetFileNameWithoutExtension(baseFile));
if (curFileName.StartsWith(baseFileWithoutExtension) == false)
{
@@ -812,7 +812,7 @@ private void InitializeFromOneFile(string baseFile, string curFileName)
string suffix = PreserveLogFileNameExtension
? Path.GetExtension(baseFile).ToLowerInvariant()
: "";
- var curFileNameWithoutDir = Path.GetFileName(curFileName);
+ string curFileNameWithoutDir = Path.GetFileName(curFileName);
if (!curFileNameWithoutDir.StartsWith(prefix) || !curFileNameWithoutDir.EndsWith(suffix))
{
LogLog.Debug(_declaringType, $"Ignoring file [{curFileName}] because it is from a different date period");
diff --git a/src/log4net/Util/Log4NetAssert.cs b/src/log4net/Util/Log4NetAssert.cs
index dda240d4..28ea8894 100644
--- a/src/log4net/Util/Log4NetAssert.cs
+++ b/src/log4net/Util/Log4NetAssert.cs
@@ -1,4 +1,4 @@
-#region Apache License
+#region Apache License
//
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with