Skip to content

Commit 8d7b03b

Browse files
committed
added test for #183
1 parent 4042bce commit 8d7b03b

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
#region Apache License
2+
3+
//
4+
// Licensed to the Apache Software Foundation (ASF) under one or more
5+
// contributor license agreements. See the NOTICE file distributed with
6+
// this work for additional information regarding copyright ownership.
7+
// The ASF licenses this file to you under the Apache License, Version 2.0
8+
// (the "License"); you may not use this file except in compliance with
9+
// the License. You may obtain a copy of the License at
10+
//
11+
// http://www.apache.org/licenses/LICENSE-2.0
12+
//
13+
// Unless required by applicable law or agreed to in writing, software
14+
// distributed under the License is distributed on an "AS IS" BASIS,
15+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16+
// See the License for the specific language governing permissions and
17+
// limitations under the License.
18+
//
19+
20+
#endregion
21+
22+
using System.Xml;
23+
using System;
24+
using log4net.Appender;
25+
using NUnit.Framework;
26+
using log4net.Repository;
27+
using log4net.Config;
28+
using log4net.Util;
29+
30+
namespace log4net.Tests.Appender;
31+
32+
/// <summary>
33+
/// Used for internal unit testing the <see cref="FileAppender"/> class.
34+
/// </summary>
35+
[TestFixture]
36+
public sealed class FileAppenderTest
37+
{
38+
/// <summary>
39+
/// Shuts down any loggers in the hierarchy, along with all appenders
40+
/// </summary>
41+
private static void Reset()
42+
{
43+
// Regular users should not use the clear method lightly!
44+
LogManager.GetRepository().ResetConfiguration();
45+
LogManager.GetRepository().Shutdown();
46+
((Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Clear();
47+
}
48+
49+
/// <summary>
50+
/// Any initialization that happens before each test can
51+
/// go here
52+
/// </summary>
53+
[SetUp]
54+
public void SetUp() => Reset();
55+
56+
/// <summary>
57+
/// Any steps that happen after each test go here
58+
/// </summary>
59+
[TearDown]
60+
public void TearDown() => Reset();
61+
62+
/// <summary>
63+
/// Verifies that the <see cref="FileAppender.File"/> property accepts a <see cref="PatternString"/>
64+
/// </summary>
65+
[Test]
66+
public void FilenameWithPatternStringTest()
67+
{
68+
LogLog.LogReceived += LogReceived;
69+
try
70+
{
71+
XmlDocument log4netConfig = new();
72+
log4netConfig.LoadXml("""
73+
<log4net>
74+
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
75+
<layout type="log4net.Layout.PatternLayout">
76+
<conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
77+
</layout>
78+
</appender>
79+
<appender name="GeneralFileAppender" type="log4net.Appender.FileAppender">
80+
<file type="log4net.Util.PatternString" value="Logs\file_%property{LogName}_%date{yyyyMMddHHmmss}.Log"/>
81+
<appendToFile value="true"/>
82+
<lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
83+
<layout type="log4net.Layout.PatternLayout">
84+
<conversionPattern value="%date{ABSOLUTE} [%logger] %level - %message%newline%exception"/>
85+
</layout>
86+
</appender>
87+
<root>
88+
<level value="INFO"/>
89+
<appender-ref ref="GeneralFileAppender"/>
90+
</root>
91+
</log4net>
92+
""");
93+
ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString());
94+
XmlConfigurator.Configure(rep, log4netConfig["log4net"]!);
95+
ILog log = LogManager.GetLogger(rep.Name, "GeneralFileAppender");
96+
log.Info("Message");
97+
}
98+
finally
99+
{
100+
LogLog.LogReceived += LogReceived;
101+
}
102+
103+
static void LogReceived(object? source, LogReceivedEventArgs e) => Assert.Fail(e.LogLog.Message);
104+
}
105+
}

0 commit comments

Comments
 (0)