<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
   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.
-->
<!-- Generated by Apache Maven Doxia at 2022-07-25 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>Apache log4net &#x2013; Rat (Release Audit Tool) results - Apache log4net</title>
		<link rel="stylesheet" href="./css/bootstrap.min.css" type="text/css" />
		<link rel="stylesheet" href="./css/site.css" type="text/css" />
		<script type="text/javascript" src="./js/jquery.min.js"></script>
		<script type="text/javascript" src="./js/bootstrap.min.js"></script>
		<script type="text/javascript" src="./js/prettify.min.js"></script>
		<script type="text/javascript" src="./js/site.js"></script>
    <meta name="Date-Revision-yyyymmdd" content="20220725" />
    <meta http-equiv="Content-Language" content="en" />
		
				</head>
	<body class="composite">
		<a href="https://logging.apache.org/">
			<img class="logo-left" src="./images/ls-logo.jpg" alt="Apache logging services logo" />
		</a>
		<!--img class="logo-right" src="./images/logo.png" alt="Apache log4net logo" /-->
		<div class="clear"></div>

		<div class="navbar">
			<div class="navbar-inner">
				<div class="container-fluid">
					<a class="brand" href="http://logging.apache.org/log4net/">Apache log4net &trade;</a>
						<ul class="nav">
						<li>
					
				
				<a href="https://wiki.apache.org/logging" class="external" target="_blank" title="Logging Wiki">Logging Wiki</a>
			</li>
					<li>
					
				
				<a href="https://www.apache.org/" class="external" target="_blank" title="Apache">Apache</a>
			</li>
					<li>
					
				
				<a href="https://logging.apache.org/" class="external" target="_blank" title="Logging Services">Logging Services</a>
			</li>
					<li>
					
				
				<a href="https://github.com/apache/logging-log4net/" class="external" target="_blank" title="GitHub">GitHub</a>
			</li>
		</ul>
				</div>
			</div>
		</div>

		<div class="container-fluid">
			<table class="layout-table">
				<tr>
					<td class="sidebar">
						<div class="well sidebar-nav">
										<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-home"></i>Apache log4net</li>
																						<li class="none">
									<a href="index.html" title="About">About</a>
					</li>
 																<li class="none">
									<a href="download_log4net.html" title="Download">Download</a>
					</li>
 																<li class="none">
									<a href="release/security-reports.html" title="Security Reports">Security Reports</a>
					</li>
 																<li class="none">
									<a href="release/release-notes.html" title="Release Notes">Release Notes</a>
					</li>
 																<li class="none">
									<a href="license.html" title="License">License</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-file"></i>Documentation</li>
																						<li class="none">
									<a href="release/features.html" title="Features">Features</a>
					</li>
 																<li class="none">
									<a href="release/framework-support.html" title="Supported Frameworks">Supported Frameworks</a>
					</li>
 																<li class="none">
									<a href="release/example-apps.html" title="Example Apps">Example Apps</a>
					</li>
 																<li class="none">
									<a href="release/config-examples.html" title="Config Examples">Config Examples</a>
					</li>
 																<li class="none">
									<a href="release/building.html" title="Building">Building</a>
					</li>
 																<li class="none">
									<a href="release/faq.html" title="FAQ">FAQ</a>
					</li>
 																<li class="none">
									<a href="release/howto/index.html" title="How Tos">How Tos</a>
					</li>
 																<li class="none">
									<a href="release/sdk/index.html" title="SDK Reference">SDK Reference</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-book"></i>Manual</li>
																						<li class="none">
									<a href="release/manual/introduction.html" title="Introduction">Introduction</a>
					</li>
 																<li class="none">
									<a href="release/manual/configuration.html" title="Configuration">Configuration</a>
					</li>
 																<li class="none">
									<a href="release/manual/contexts.html" title="Contexts">Contexts</a>
					</li>
 																<li class="none">
									<a href="release/manual/plugins.html" title="Plugins">Plugins</a>
					</li>
 																<li class="none">
									<a href="release/manual/repositories.html" title="Repositories">Repositories</a>
					</li>
 																<li class="none">
									<a href="release/manual/internals.html" title="Internals">Internals</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-pencil"></i>For Contributors</li>
																						<li class="none">
									<a href="mail-lists.html" title="Mailing Lists">Mailing Lists</a>
					</li>
 																<li class="none">
									<a href="issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
					</li>
 																<li class="none">
									<a href="source-repository.html" title="Repository">Repository</a>
					</li>
 																<li class="none">
									<a href="integration.html" title="Continuous Integration">Continuous Integration</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-cog"></i>Project Reports</li>
																							<li class="none active">
									<a href="rat-report.html" title="RAT Report">RAT Report</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-info-sign"></i>Apache</li>
																						<li class="none">
					
				
				<a href="http://www.apache.org/" class="external" target="_blank" title="Home">Home</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/licenses/" class="external" target="_blank" title="License">License</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/foundation/sponsorship.html" class="external" target="_blank" title="Sponsorship">Sponsorship</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/foundation/thanks.html" class="external" target="_blank" title="Thanks">Thanks</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apache.org/security/" class="external" target="_blank" title="Security">Security</a>
					</li>
 																<li class="none">
					
				
				<a href="http://www.apachecon.com" class="external" target="_blank" title="Conferences">Conferences</a>
					</li>
 								</ul>
							</div>
						<div id="poweredBy">
															<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
				<img class="poweredBy" alt="Built by Maven" src="./images/maven-feather.png" />
			</a>
									</div>
					</td>
					<td class="content">
						<div class="section">
<h2><a name="Rat_Release_Audit_Tool_results"></a>Rat (Release Audit Tool) results</h2>
<p>The following document contains the results of <a class="externalLink" href="http://creadur.apache.org/rat/apache-rat-plugin/">Rat (Release Audit Tool)</a>.</p>
<p></p>
<div class="source">
<pre>
*****************************************************
Summary
-------
Generated at: 2022-07-25T08:56:14+02:00

Notes: 5
Binaries: 259
Archives: 0
Standards: 731

Apache Licensed: 669
Generated Documents: 0

JavaDocs are generated, thus a license header is optional.
Generated files do not require license headers.

62 Unknown Licenses

*****************************************************

Files with unapproved licenses:

  appveyer.yml
  install-net-framework-sdk-3.5.ps1
  install-dotnet-core-sdk-1.1.ps1
  doc/RELEASING.md
  doc/sign-log4net-libraries.sh
  doc/BUILDING.md
  doc/ReleaseInstructions-legacy.txt
  doc/CONTRIBUTING.md
  build-with-docker-for-windows.bat
  local-tasks/build-site.js
  local-tasks/prepare-build-artifacts.js
  local-tasks/hash-build-artifacts.js
  local-tasks/zip.js
  local-tasks/update-version-info.js
  local-tasks/prefix-build-artifacts.js
  src/Directory.Build.props
  src/integration-testing/log4net-611-lib/DerivedAppender.cs
  src/integration-testing/log4net-611-lib/log4net-611-lib.csproj
  src/integration-testing/log4net-611-main/log4net.config
  src/integration-testing/log4net-611-main/Program.cs
  src/integration-testing/log4net-611-main/log4net-611-main.csproj
  src/integration-testing/log4net-673/log4net.config
  src/integration-testing/log4net-673/Program.cs
  src/integration-testing/log4net-673/log4net-673.csproj
  src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.config
  src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.xml
  src/integration-testing/log4net-672/log4net.config
  src/integration-testing/log4net-672/Program.cs
  src/integration-testing/log4net-672/log4net-672.csproj
  src/integration-testing/log4net-681/log4net.config
  src/integration-testing/log4net-681/Program.cs
  src/integration-testing/log4net-681/log4net-681.csproj
  src/MonoForFramework.targets
  src/log4net/Core/FixFlags.cs
  src/log4net/log4net.csproj
  src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log
  src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.xml
  src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log.1
  src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_default.log
  src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log.2
  src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.xml
  src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log
  src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.xml
  src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.3
  src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.1
  src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_default.log
  src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.2
  src/log4net.Tests/bin/CrossPlatform/net462/log4net.xml
  src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.xml
  src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.xml
  src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.xml
  src/log4net.Tests/bin/Debug/net462/log4net.xml
  src/log4net.Tests/NUnitTestRunnerInitializer.cs
  src/log4net.Tests/log4net.Tests.csproj
  src/.idea/.idea.log4net/.idea/projectSettingsUpdater.xml
  src/.idea/.idea.log4net/.idea/codeStyles/codeStyleConfig.xml
  src/.idea/.idea.log4net/.idea/vcs.xml
  src/.idea/.idea.log4net/.idea/workspace.xml
  src/.idea/.idea.log4net/.idea/indexLayout.xml
  src/.idea/.idea.log4net/.idea/misc.xml
  src/.idea/.idea.log4net/.idea/.name
  README.md

*****************************************************

*****************************************************
  Files with Apache License headers will be marked AL
  Binary files (which do not require any license headers) will be marked B
  Compressed archives will be marked A
  Notices, licenses etc. will be marked N
  AL    examples/mono/nant.build
  AL    examples/mono/1.0/Performance/nant.build
  AL    examples/mono/1.0/Performance/NotLogging/cs/nant.build
  AL    examples/mono/1.0/Performance/NotLogging/cs/src/AssemblyInfo.cs
  AL    examples/mono/1.0/Performance/NotLogging/cs/src/NotLogging.cs
  AL    examples/mono/1.0/Performance/NotLogging/cs/nant.config
  AL    examples/mono/1.0/Performance/NotLogging/nant.build
  AL    examples/mono/1.0/Performance/NotLogging/nant.config
  AL    examples/mono/1.0/Performance/nant.config
  AL    examples/mono/1.0/Tutorials/ConsoleApp/cs/nant.build
  AL    examples/mono/1.0/Tutorials/ConsoleApp/cs/src/AssemblyInfo.cs
  AL    examples/mono/1.0/Tutorials/ConsoleApp/cs/src/LoggingExample.cs
  AL    examples/mono/1.0/Tutorials/ConsoleApp/cs/src/App.config
  AL    examples/mono/1.0/Tutorials/ConsoleApp/cs/nant.config
  AL    examples/mono/1.0/Tutorials/ConsoleApp/nant.build
  AL    examples/mono/1.0/Tutorials/ConsoleApp/nant.config
  AL    examples/mono/1.0/Tutorials/nant.build
  AL    examples/mono/1.0/Tutorials/nant.config
  AL    examples/mono/1.0/Repository/SharedModule/cs/nant.build
  AL    examples/mono/1.0/Repository/SharedModule/cs/src/AssemblyInfo.cs
  AL    examples/mono/1.0/Repository/SharedModule/cs/src/Math.cs
  AL    examples/mono/1.0/Repository/SharedModule/cs/nant.config
  AL    examples/mono/1.0/Repository/SharedModule/nant.build
  AL    examples/mono/1.0/Repository/SharedModule/nant.config
  AL    examples/mono/1.0/Repository/nant.build
  AL    examples/mono/1.0/Repository/SimpleApp/cs/nant.build
  AL    examples/mono/1.0/Repository/SimpleApp/cs/src/AssemblyInfo.cs
  AL    examples/mono/1.0/Repository/SimpleApp/cs/src/EntryPoint.cs
  B     examples/mono/1.0/Repository/SimpleApp/cs/src/SimpleApp.exe.log4net
  AL    examples/mono/1.0/Repository/SimpleApp/cs/src/App.config
  AL    examples/mono/1.0/Repository/SimpleApp/cs/nant.config
  AL    examples/mono/1.0/Repository/SimpleApp/nant.build
  AL    examples/mono/1.0/Repository/SimpleApp/nant.config
  AL    examples/mono/1.0/Repository/SimpleModule/cs/nant.build
  AL    examples/mono/1.0/Repository/SimpleModule/cs/src/AssemblyInfo.cs
  B     examples/mono/1.0/Repository/SimpleModule/cs/src/SimpleModule.dll.log4net
  AL    examples/mono/1.0/Repository/SimpleModule/cs/src/Math.cs
  AL    examples/mono/1.0/Repository/SimpleModule/cs/nant.config
  AL    examples/mono/1.0/Repository/SimpleModule/nant.build
  AL    examples/mono/1.0/Repository/SimpleModule/nant.config
  AL    examples/mono/1.0/Repository/nant.config
  AL    examples/mono/1.0/nant.build
  AL    examples/mono/1.0/nant.config
  AL    examples/mono/nant.config
  AL    examples/nant.build
  AL    examples/netcf/nant.build
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/cs/nant.build
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/cs/src/AssemblyInfo.cs
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/cs/src/ConsoleApp.csdproj
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/cs/src/EntryPoint.cs
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/cs/src/LoggingExample.cs
  B     examples/netcf/1.0/Tutorials/ConsoleApp/cs/src/ConsoleApp.exe.config
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/cs/nant.config
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/nant.build
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/vb/nant.build
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/vb/src/AssemblyInfo.vb
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/vb/src/LoggingExample.vb
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/vb/src/EntryPoint.vb
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/vb/src/ConsoleApp.vbdproj
  B     examples/netcf/1.0/Tutorials/ConsoleApp/vb/src/ConsoleApp.exe.config
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/vb/nant.config
  AL    examples/netcf/1.0/Tutorials/ConsoleApp/nant.config
  AL    examples/netcf/1.0/Tutorials/nant.build
  AL    examples/netcf/1.0/Tutorials/nant.config
  AL    examples/netcf/1.0/cs-examples.sln
  AL    examples/netcf/1.0/nant.build
  AL    examples/netcf/1.0/nant.config
  AL    examples/netcf/1.0/vb-examples.sln
  AL    examples/netcf/nant.config
  AL    examples/sscli/nant.build
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/nant.build
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/js/nant.build
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/js/src/LoggingExample.js
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/js/src/App.config
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/js/src/AssemblyInfo.js
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/js/nant.config
  AL    examples/sscli/1.0/Tutorials/ConsoleApp/nant.config
  AL    examples/sscli/1.0/Tutorials/nant.build
  AL    examples/sscli/1.0/Tutorials/nant.config
  AL    examples/sscli/1.0/Repository/SharedModule/cs/nant.build
  AL    examples/sscli/1.0/Repository/SharedModule/cs/src/AssemblyInfo.cs
  AL    examples/sscli/1.0/Repository/SharedModule/cs/src/Math.cs
  AL    examples/sscli/1.0/Repository/SharedModule/cs/nant.config
  AL    examples/sscli/1.0/Repository/SharedModule/nant.build
  AL    examples/sscli/1.0/Repository/SharedModule/nant.config
  AL    examples/sscli/1.0/Repository/nant.build
  AL    examples/sscli/1.0/Repository/SimpleApp/cs/nant.build
  AL    examples/sscli/1.0/Repository/SimpleApp/cs/src/AssemblyInfo.cs
  AL    examples/sscli/1.0/Repository/SimpleApp/cs/src/EntryPoint.cs
  B     examples/sscli/1.0/Repository/SimpleApp/cs/src/SimpleApp.exe.log4net
  AL    examples/sscli/1.0/Repository/SimpleApp/cs/src/App.config
  AL    examples/sscli/1.0/Repository/SimpleApp/cs/nant.config
  AL    examples/sscli/1.0/Repository/SimpleApp/nant.build
  AL    examples/sscli/1.0/Repository/SimpleApp/nant.config
  AL    examples/sscli/1.0/Repository/SimpleModule/cs/nant.build
  AL    examples/sscli/1.0/Repository/SimpleModule/cs/src/AssemblyInfo.cs
  B     examples/sscli/1.0/Repository/SimpleModule/cs/src/SimpleModule.dll.log4net
  AL    examples/sscli/1.0/Repository/SimpleModule/cs/src/Math.cs
  AL    examples/sscli/1.0/Repository/SimpleModule/cs/nant.config
  AL    examples/sscli/1.0/Repository/SimpleModule/nant.build
  AL    examples/sscli/1.0/Repository/SimpleModule/nant.config
  AL    examples/sscli/1.0/Repository/nant.config
  AL    examples/sscli/1.0/nant.build
  AL    examples/sscli/1.0/nant.config
  AL    examples/sscli/nant.config
  AL    examples/net/1.1/Tutorials/ConsoleApp/cpp/nant.build
  AL    examples/net/1.1/Tutorials/ConsoleApp/cpp/src/ConsoleApp.vcproj
  AL    examples/net/1.1/Tutorials/ConsoleApp/cpp/src/AssemblyInfo.cpp
  AL    examples/net/1.1/Tutorials/ConsoleApp/cpp/src/ConsoleApp.cpp
  AL    examples/net/1.1/Tutorials/ConsoleApp/cpp/src/App.config
  AL    examples/net/1.1/Tutorials/ConsoleApp/cpp/nant.config
  AL    examples/net/1.1/Tutorials/ConsoleApp/nant.build
  AL    examples/net/1.1/Tutorials/ConsoleApp/js/nant.build
  AL    examples/net/1.1/Tutorials/ConsoleApp/js/src/LoggingExample.js
  AL    examples/net/1.1/Tutorials/ConsoleApp/js/src/App.config
  AL    examples/net/1.1/Tutorials/ConsoleApp/js/src/AssemblyInfo.js
  AL    examples/net/1.1/Tutorials/ConsoleApp/js/nant.config
  AL    examples/net/1.1/Tutorials/ConsoleApp/nant.config
  AL    examples/net/1.1/Tutorials/nant.build
  AL    examples/net/1.1/Tutorials/nant.config
  AL    examples/net/1.1/cpp-examples.sln
  AL    examples/net/1.1/Repository/SharedModule/nant.build
  AL    examples/net/1.1/Repository/SharedModule/js/nant.build
  AL    examples/net/1.1/Repository/SharedModule/js/src/AssemblyInfo.js
  AL    examples/net/1.1/Repository/SharedModule/js/src/Math.js
  AL    examples/net/1.1/Repository/SharedModule/js/nant.config
  AL    examples/net/1.1/Repository/SharedModule/nant.config
  AL    examples/net/1.1/Repository/nant.build
  AL    examples/net/1.1/Repository/SimpleApp/nant.build
  AL    examples/net/1.1/Repository/SimpleApp/js/nant.build
  B     examples/net/1.1/Repository/SimpleApp/js/src/SimpleApp.exe.log4net
  AL    examples/net/1.1/Repository/SimpleApp/js/src/EntryPoint.js
  AL    examples/net/1.1/Repository/SimpleApp/js/src/App.config
  AL    examples/net/1.1/Repository/SimpleApp/js/src/AssemblyInfo.js
  AL    examples/net/1.1/Repository/SimpleApp/js/nant.config
  AL    examples/net/1.1/Repository/SimpleApp/nant.config
  AL    examples/net/1.1/Repository/SimpleModule/nant.build
  AL    examples/net/1.1/Repository/SimpleModule/js/nant.build
  B     examples/net/1.1/Repository/SimpleModule/js/src/SimpleModule.dll.log4net
  AL    examples/net/1.1/Repository/SimpleModule/js/src/AssemblyInfo.js
  AL    examples/net/1.1/Repository/SimpleModule/js/src/Math.js
  AL    examples/net/1.1/Repository/SimpleModule/js/nant.config
  AL    examples/net/1.1/Repository/SimpleModule/nant.config
  AL    examples/net/1.1/Repository/nant.config
  AL    examples/net/1.1/nant.build
  AL    examples/net/1.1/nant.config
  AL    examples/net/nant.build
  AL    examples/net/2.0/Performance/nant.build
  AL    examples/net/2.0/Performance/NotLogging/cs/nant.build
  AL    examples/net/2.0/Performance/NotLogging/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Performance/NotLogging/cs/src/NotLogging.csproj
  AL    examples/net/2.0/Performance/NotLogging/cs/src/NotLogging.cs
  AL    examples/net/2.0/Performance/NotLogging/cs/nant.config
  AL    examples/net/2.0/Performance/NotLogging/nant.build
  AL    examples/net/2.0/Performance/NotLogging/vb/nant.build
  AL    examples/net/2.0/Performance/NotLogging/vb/src/NotLogging.vb
  AL    examples/net/2.0/Performance/NotLogging/vb/src/AssemblyInfo.vb
  AL    examples/net/2.0/Performance/NotLogging/vb/src/NotLogging.vbproj
  AL    examples/net/2.0/Performance/NotLogging/vb/nant.config
  AL    examples/net/2.0/Performance/NotLogging/nant.config
  AL    examples/net/2.0/Performance/nant.config
  AL    examples/net/2.0/Remoting/RemotingServer/cs/nant.build
  AL    examples/net/2.0/Remoting/RemotingServer/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Remoting/RemotingServer/cs/src/RemotingServer.cs
  AL    examples/net/2.0/Remoting/RemotingServer/cs/src/App.config
  AL    examples/net/2.0/Remoting/RemotingServer/cs/src/RemotingServer.csproj
  AL    examples/net/2.0/Remoting/RemotingServer/cs/nant.config
  AL    examples/net/2.0/Remoting/RemotingServer/nant.build
  AL    examples/net/2.0/Remoting/RemotingServer/nant.config
  AL    examples/net/2.0/Remoting/RemotingClient/cs/nant.build
  AL    examples/net/2.0/Remoting/RemotingClient/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Remoting/RemotingClient/cs/src/RemotingClient.cs
  AL    examples/net/2.0/Remoting/RemotingClient/cs/src/RemotingClient.csproj
  AL    examples/net/2.0/Remoting/RemotingClient/cs/src/App.config
  AL    examples/net/2.0/Remoting/RemotingClient/cs/nant.config
  AL    examples/net/2.0/Remoting/RemotingClient/nant.build
  AL    examples/net/2.0/Remoting/RemotingClient/nant.config
  AL    examples/net/2.0/Remoting/nant.build
  AL    examples/net/2.0/Remoting/nant.config
  AL    examples/net/2.0/Tutorials/ConsoleApp/cs/nant.build
  AL    examples/net/2.0/Tutorials/ConsoleApp/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Tutorials/ConsoleApp/cs/src/ConsoleApp.csproj
  AL    examples/net/2.0/Tutorials/ConsoleApp/cs/src/LoggingExample.cs
  AL    examples/net/2.0/Tutorials/ConsoleApp/cs/src/App.config
  AL    examples/net/2.0/Tutorials/ConsoleApp/cs/nant.config
  AL    examples/net/2.0/Tutorials/ConsoleApp/nant.build
  AL    examples/net/2.0/Tutorials/ConsoleApp/vb/nant.build
  AL    examples/net/2.0/Tutorials/ConsoleApp/vb/src/AssemblyInfo.vb
  AL    examples/net/2.0/Tutorials/ConsoleApp/vb/src/LoggingExample.vb
  AL    examples/net/2.0/Tutorials/ConsoleApp/vb/src/ConsoleApp.vbproj
  AL    examples/net/2.0/Tutorials/ConsoleApp/vb/src/App.config
  AL    examples/net/2.0/Tutorials/ConsoleApp/vb/nant.config
  AL    examples/net/2.0/Tutorials/ConsoleApp/nant.config
  AL    examples/net/2.0/Tutorials/nant.build
  AL    examples/net/2.0/Tutorials/nant.config
  AL    examples/net/2.0/Tutorials/WebApp/cs/nant.build
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/AssemblyInfo.cs
  B     examples/net/2.0/Tutorials/WebApp/cs/src/SimpleModule.dll.log4net
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/AssemblyVersionInfo.cs
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/Global.asax.cs
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/Web.config
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/WebApp.vsdisco
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/WebForm1.aspx.cs
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/WebForm1.aspx.resx
  B     examples/net/2.0/Tutorials/WebApp/cs/src/WebApp.dll.log4net
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/Global.asax
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/Global.asax.resx
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/WebForm1.aspx
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/WebApp.csproj.webinfo
  AL    examples/net/2.0/Tutorials/WebApp/cs/src/WebApp.csproj
  AL    examples/net/2.0/Tutorials/WebApp/cs/nant.config
  AL    examples/net/2.0/Tutorials/WebApp/nant.build
  AL    examples/net/2.0/Tutorials/WebApp/vb/nant.build
  B     examples/net/2.0/Tutorials/WebApp/vb/src/SimpleModule.dll.log4net
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/Global.asax.vb
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/WebForm1.aspx.vb
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/AssemblyInfo.vb
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/Web.config
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/WebApp.vsdisco
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/WebForm1.aspx.resx
  B     examples/net/2.0/Tutorials/WebApp/vb/src/WebApp.dll.log4net
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/AssemblyVersionInfo.vb
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/Global.asax
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/Global.asax.resx
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/WebApp.vbproj
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/WebApp.vbproj.webinfo
  AL    examples/net/2.0/Tutorials/WebApp/vb/src/WebForm1.aspx
  AL    examples/net/2.0/Tutorials/WebApp/vb/nant.config
  N     examples/net/2.0/Tutorials/WebApp/readme.txt
  AL    examples/net/2.0/Tutorials/WebApp/nant.config
  AL    examples/net/2.0/cs-examples.sln
  AL    examples/net/2.0/Repository/SharedModule/cs/nant.build
  AL    examples/net/2.0/Repository/SharedModule/cs/src/SharedModule.csproj
  AL    examples/net/2.0/Repository/SharedModule/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Repository/SharedModule/cs/src/Math.cs
  AL    examples/net/2.0/Repository/SharedModule/cs/nant.config
  AL    examples/net/2.0/Repository/SharedModule/nant.build
  AL    examples/net/2.0/Repository/SharedModule/vb/nant.build
  AL    examples/net/2.0/Repository/SharedModule/vb/src/AssemblyInfo.vb
  AL    examples/net/2.0/Repository/SharedModule/vb/src/SharedModule.vbproj
  AL    examples/net/2.0/Repository/SharedModule/vb/src/Math.vb
  AL    examples/net/2.0/Repository/SharedModule/vb/nant.config
  AL    examples/net/2.0/Repository/SharedModule/nant.config
  AL    examples/net/2.0/Repository/nant.build
  AL    examples/net/2.0/Repository/SimpleApp/cs/nant.build
  AL    examples/net/2.0/Repository/SimpleApp/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Repository/SimpleApp/cs/src/EntryPoint.cs
  B     examples/net/2.0/Repository/SimpleApp/cs/src/SimpleApp.exe.log4net
  AL    examples/net/2.0/Repository/SimpleApp/cs/src/App.config
  AL    examples/net/2.0/Repository/SimpleApp/cs/src/SimpleApp.csproj
  AL    examples/net/2.0/Repository/SimpleApp/cs/nant.config
  AL    examples/net/2.0/Repository/SimpleApp/nant.build
  AL    examples/net/2.0/Repository/SimpleApp/vb/nant.build
  AL    examples/net/2.0/Repository/SimpleApp/vb/src/AssemblyInfo.vb
  B     examples/net/2.0/Repository/SimpleApp/vb/src/SimpleApp.exe.log4net
  AL    examples/net/2.0/Repository/SimpleApp/vb/src/SimpleApp.vbproj
  AL    examples/net/2.0/Repository/SimpleApp/vb/src/App.config
  AL    examples/net/2.0/Repository/SimpleApp/vb/src/EntryPoint.vb
  AL    examples/net/2.0/Repository/SimpleApp/vb/nant.config
  AL    examples/net/2.0/Repository/SimpleApp/nant.config
  AL    examples/net/2.0/Repository/SimpleModule/cs/nant.build
  AL    examples/net/2.0/Repository/SimpleModule/cs/src/AssemblyInfo.cs
  B     examples/net/2.0/Repository/SimpleModule/cs/src/SimpleModule.dll.log4net
  AL    examples/net/2.0/Repository/SimpleModule/cs/src/Math.cs
  AL    examples/net/2.0/Repository/SimpleModule/cs/src/SimpleModule.csproj
  AL    examples/net/2.0/Repository/SimpleModule/cs/nant.config
  AL    examples/net/2.0/Repository/SimpleModule/nant.build
  AL    examples/net/2.0/Repository/SimpleModule/vb/nant.build
  B     examples/net/2.0/Repository/SimpleModule/vb/src/SimpleModule.dll.log4net
  AL    examples/net/2.0/Repository/SimpleModule/vb/src/AssemblyInfo.vb
  AL    examples/net/2.0/Repository/SimpleModule/vb/src/Math.vb
  AL    examples/net/2.0/Repository/SimpleModule/vb/src/SimpleModule.vbproj
  AL    examples/net/2.0/Repository/SimpleModule/vb/nant.config
  AL    examples/net/2.0/Repository/SimpleModule/nant.config
  AL    examples/net/2.0/Repository/nant.config
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/nant.build
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/LoggingExample.cs
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/App.config
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/Layout/LineWrappingLayout.cs
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/Layout/LevelConversionPattern.cs
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/Layout/LevelPatternLayout.cs
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/Layout/ForwardingLayout.cs
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/src/SampleLayoutsApp.csproj
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/cs/nant.config
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/nant.build
  AL    examples/net/2.0/Layouts/SampleLayoutsApp/nant.config
  AL    examples/net/2.0/Layouts/nant.build
  AL    examples/net/2.0/Layouts/nant.config
  AL    examples/net/2.0/Extensibility/nant.build
  AL    examples/net/2.0/Extensibility/EventIDLogApp/cs/nant.build
  AL    examples/net/2.0/Extensibility/EventIDLogApp/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Extensibility/EventIDLogApp/cs/src/EventIDLogApp.csproj
  AL    examples/net/2.0/Extensibility/EventIDLogApp/cs/src/EventIDLogApp.cs
  AL    examples/net/2.0/Extensibility/EventIDLogApp/cs/src/App.config
  AL    examples/net/2.0/Extensibility/EventIDLogApp/cs/nant.config
  AL    examples/net/2.0/Extensibility/EventIDLogApp/nant.build
  AL    examples/net/2.0/Extensibility/EventIDLogApp/nant.config
  AL    examples/net/2.0/Extensibility/nant.config
  AL    examples/net/2.0/Extensibility/TraceLogApp/cs/nant.build
  AL    examples/net/2.0/Extensibility/TraceLogApp/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Extensibility/TraceLogApp/cs/src/TraceLogApp.cs
  B     examples/net/2.0/Extensibility/TraceLogApp/cs/src/TraceLogApp.exe.log4net
  AL    examples/net/2.0/Extensibility/TraceLogApp/cs/src/TraceLogApp.csproj
  AL    examples/net/2.0/Extensibility/TraceLogApp/cs/nant.config
  AL    examples/net/2.0/Extensibility/TraceLogApp/nant.build
  AL    examples/net/2.0/Extensibility/TraceLogApp/nant.config
  AL    examples/net/2.0/nant.build
  AL    examples/net/2.0/nant.config
  AL    examples/net/2.0/vb-examples.sln
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/nant.build
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/FastDbAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/PatternLayoutAdoNetAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/MessageObjectExpanderAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/FireEventAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/AsyncAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/SimpleSmtpAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/PatternLayoutAdoNetAppenderParameter.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/PatternFileAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/MsmqAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/Appender/MessageBoxAppender.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/SampleAppendersApp.csproj
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/LoggingExample.cs
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/src/App.config
  AL    examples/net/2.0/Appenders/SampleAppendersApp/cs/nant.config
  AL    examples/net/2.0/Appenders/SampleAppendersApp/nant.build
  AL    examples/net/2.0/Appenders/SampleAppendersApp/nant.config
  AL    examples/net/2.0/Appenders/WmiAppender/cs/nant.build
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/AssemblyInfo.cs
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/WmiLayout.cs
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/IWmiBoundEvent.cs
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/WmiLoggingEvent.cs
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/WmiInstaller.cs
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/WmiAppender.cs
  AL    examples/net/2.0/Appenders/WmiAppender/cs/src/WmiAppender.csproj
  AL    examples/net/2.0/Appenders/WmiAppender/cs/nant.config
  AL    examples/net/2.0/Appenders/WmiAppender/nant.build
  AL    examples/net/2.0/Appenders/WmiAppender/nant.config
  AL    examples/net/2.0/Appenders/nant.build
  AL    examples/net/2.0/Appenders/nant.config
  AL    examples/net/nant.config
  AL    examples/nant.config
  AL    log4net.include
  AL    log4net.shfbproj
 !????? appveyer.yml
 !????? install-net-framework-sdk-3.5.ps1
  B     package-icon.png
  N     KEYS
 !????? install-dotnet-core-sdk-1.1.ps1
 !????? doc/RELEASING.md
 !????? doc/sign-log4net-libraries.sh
 !????? doc/BUILDING.md
 !????? doc/ReleaseInstructions-legacy.txt
 !????? doc/CONTRIBUTING.md
  AL    tests/nant.build
  AL    netstandard/log4net.tests/CompatibilityExtensions.cs
  AL    netstandard/log4net.tests/log4net.tests.xproj
  AL    netstandard/log4net.tests/ApplicationException.cs
  AL    netstandard/log4net.tests/ExpectedExceptionAttribute.cs
  AL    netstandard/log4net/CompatibilityExtensions.cs
  AL    netstandard/log4net/log4net.xproj
  AL    netstandard/log4net.netstandard.sln
  AL    extensions/nant.build
  AL    extensions/net/nant.build
  AL    extensions/net/1.0/cs-extensions.sln
  AL    extensions/net/1.0/nant.build
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/nant.build
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/src/log4net.Ext.Trace.csproj
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/src/AssemblyInfo.cs
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/src/TraceLogImpl.cs
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/src/ITraceLog.cs
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/src/TraceLogManager.cs
  AL    extensions/net/1.0/log4net.Ext.Trace/cs/nant.config
  AL    extensions/net/1.0/log4net.Ext.Trace/nant.build
  AL    extensions/net/1.0/log4net.Ext.Trace/nant.config
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/cs/nant.build
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/cs/src/AssemblyInfo.cs
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/cs/src/MarshalByRefLogImpl.cs
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/cs/src/MarshalByRefLogManager.cs
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/cs/src/log4net.Ext.MarshalByRef.csproj
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/cs/nant.config
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/nant.build
  AL    extensions/net/1.0/log4net.Ext.MarshalByRef/nant.config
  AL    extensions/net/1.0/nant.config
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/nant.build
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/src/AssemblyInfo.cs
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/src/log4net.Ext.EventID.csproj
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/src/EventIDLogManager.cs
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/src/IEventIDLog.cs
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/src/EventIDLogImpl.cs
  AL    extensions/net/1.0/log4net.Ext.EventID/cs/nant.config
  AL    extensions/net/1.0/log4net.Ext.EventID/nant.build
  AL    extensions/net/1.0/log4net.Ext.EventID/nant.config
  AL    extensions/net/nant.config
  AL    extensions/nant.config
  AL    Jenkinsfile
  N     STATUS.txt
 !????? build-with-docker-for-windows.bat
  N     NOTICE
 !????? local-tasks/build-site.js
 !????? local-tasks/prepare-build-artifacts.js
 !????? local-tasks/hash-build-artifacts.js
 !????? local-tasks/zip.js
 !????? local-tasks/update-version-info.js
 !????? local-tasks/prefix-build-artifacts.js
 !????? src/Directory.Build.props
  AL    src/site/site.xml
  AL    src/site/site.vm
  AL    src/site/apt/roadmap.apt
  AL    src/site/xdoc/history.xml
  AL    src/site/xdoc/release/manual/internals.xml
  AL    src/site/xdoc/release/manual/plugins.xml
  AL    src/site/xdoc/release/manual/configuration.xml
  AL    src/site/xdoc/release/manual/contexts.xml
  AL    src/site/xdoc/release/manual/repositories.xml
  AL    src/site/xdoc/release/manual/introduction.xml
  AL    src/site/xdoc/release/security-reports.xml
  AL    src/site/xdoc/release/example-apps.xml
  AL    src/site/xdoc/release/features.xml
  AL    src/site/xdoc/release/config-examples.xml
  AL    src/site/xdoc/release/release-notes.xml
  AL    src/site/xdoc/release/faq.xml
  AL    src/site/xdoc/release/building.xml
  AL    src/site/xdoc/release/howto/chainsaw.xml
  AL    src/site/xdoc/release/howto/index.xml
  AL    src/site/xdoc/release/framework-support.xml
  AL    src/site/xdoc/download_log4net.xml
  AL    src/site/xdoc/index.xml
 !????? src/integration-testing/log4net-611-lib/DerivedAppender.cs
 !????? src/integration-testing/log4net-611-lib/log4net-611-lib.csproj
 !????? src/integration-testing/log4net-611-main/log4net.config
 !????? src/integration-testing/log4net-611-main/Program.cs
 !????? src/integration-testing/log4net-611-main/log4net-611-main.csproj
 !????? src/integration-testing/log4net-673/log4net.config
 !????? src/integration-testing/log4net-673/Program.cs
 !????? src/integration-testing/log4net-673/log4net-673.csproj
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/PeanutButter.Utils.dll
 !????? src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.config
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/System.Security.Permissions.dll
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.pdb
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll
 !????? src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.xml
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/log4net-672.pdb
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/log4net-672.dll
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/PeanutButter.EasyArgs.dll
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/log4net-672
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/System.Security.Cryptography.ProtectedData.dll
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/System.Configuration.ConfigurationManager.dll
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.dll
  B     src/integration-testing/log4net-672/bin/Debug/net6.0/PeanutButter.DuckTyping.dll
 !????? src/integration-testing/log4net-672/log4net.config
 !????? src/integration-testing/log4net-672/Program.cs
 !????? src/integration-testing/log4net-672/log4net-672.csproj
 !????? src/integration-testing/log4net-681/log4net.config
 !????? src/integration-testing/log4net-681/Program.cs
 !????? src/integration-testing/log4net-681/log4net-681.csproj
  AL    src/log4net.sln
  AL    src/changes/changes.xml
 !????? src/MonoForFramework.targets
  AL    src/log4net/AssemblyInfo.cs
  AL    src/log4net/AssemblyVersionInfo.cs
  AL    src/log4net/Appender/AppenderSkeleton.cs
  AL    src/log4net/Appender/SmtpPickupDirAppender.cs
  AL    src/log4net/Appender/ManagedColoredConsoleAppender.cs
  AL    src/log4net/Appender/RollingFileAppender.cs
  AL    src/log4net/Appender/LocalSyslogAppender.cs
  AL    src/log4net/Appender/IBulkAppender.cs
  AL    src/log4net/Appender/OutputDebugStringAppender.cs
  AL    src/log4net/Appender/RemoteSyslogAppender.cs
  AL    src/log4net/Appender/EventLogAppender.cs
  AL    src/log4net/Appender/TraceAppender.cs
  AL    src/log4net/Appender/BufferingForwardingAppender.cs
  AL    src/log4net/Appender/RemotingAppender.cs
  AL    src/log4net/Appender/ForwardingAppender.cs
  AL    src/log4net/Appender/TextWriterAppender.cs
  AL    src/log4net/Appender/FileAppender.cs
  AL    src/log4net/Appender/SmtpAppender.cs
  AL    src/log4net/Appender/DebugAppender.cs
  AL    src/log4net/Appender/AppenderCollection.cs
  AL    src/log4net/Appender/ColoredConsoleAppender.cs
  AL    src/log4net/Appender/AnsiColorTerminalAppender.cs
  AL    src/log4net/Appender/BufferingAppenderSkeleton.cs
  AL    src/log4net/Appender/NetSendAppender.cs
  AL    src/log4net/Appender/IAppender.cs
  AL    src/log4net/Appender/TelnetAppender.cs
  AL    src/log4net/Appender/MemoryAppender.cs
  AL    src/log4net/Appender/UdpAppender.cs
  AL    src/log4net/Appender/AspNetTraceAppender.cs
  AL    src/log4net/Appender/ConsoleAppender.cs
  AL    src/log4net/Appender/AdoNetAppender.cs
  AL    src/log4net/Appender/IFlushable.cs
  AL    src/log4net/LogicalThreadContext.cs
  AL    src/log4net/Log4netAssemblyInfo.cs
  AL    src/log4net/MDC.cs
  AL    src/log4net/Repository/IXmlRepositoryConfigurator.cs
  AL    src/log4net/Repository/ILoggerRepository.cs
  AL    src/log4net/Repository/Hierarchy/RootLogger.cs
  AL    src/log4net/Repository/Hierarchy/DefaultLoggerFactory.cs
  AL    src/log4net/Repository/Hierarchy/Hierarchy.cs
  AL    src/log4net/Repository/Hierarchy/XmlHierarchyConfigurator.cs
  AL    src/log4net/Repository/Hierarchy/LoggerKey.cs
  AL    src/log4net/Repository/Hierarchy/ProvisionNode.cs
  AL    src/log4net/Repository/Hierarchy/ILoggerFactory.cs
  AL    src/log4net/Repository/Hierarchy/Logger.cs
  AL    src/log4net/Repository/IBasicRepositoryConfigurator.cs
  AL    src/log4net/Repository/ConfigurationChangedEventArgs.cs
  AL    src/log4net/Repository/LoggerRepositorySkeleton.cs
  AL    src/log4net/ThreadContext.cs
  AL    src/log4net/Filter/PropertyFilter.cs
  AL    src/log4net/Filter/MdcFilter.cs
  AL    src/log4net/Filter/IFilter.cs
  AL    src/log4net/Filter/NdcFilter.cs
  AL    src/log4net/Filter/FilterDecision.cs
  AL    src/log4net/Filter/StringMatchFilter.cs
  AL    src/log4net/Filter/LevelRangeFilter.cs
  AL    src/log4net/Filter/LevelMatchFilter.cs
  AL    src/log4net/Filter/LoggerMatchFilter.cs
  AL    src/log4net/Filter/FilterSkeleton.cs
  AL    src/log4net/Filter/DenyAllFilter.cs
  AL    src/log4net/Config/PluginAttribute.cs
  AL    src/log4net/Config/RepositoryAttribute.cs
  AL    src/log4net/Config/DOMConfiguratorAttribute.cs
  AL    src/log4net/Config/XmlConfigurator.cs
  AL    src/log4net/Config/BasicConfigurator.cs
  AL    src/log4net/Config/SecurityContextProviderAttribute.cs
  AL    src/log4net/Config/DomainAttribute.cs
  AL    src/log4net/Config/AliasDomainAttribute.cs
  AL    src/log4net/Config/ConfiguratorAttribute.cs
  AL    src/log4net/Config/Log4NetConfigurationSectionHandler.cs
  AL    src/log4net/Config/DOMConfigurator.cs
  AL    src/log4net/Config/XmlConfiguratorAttribute.cs
  AL    src/log4net/Config/AliasRepositoryAttribute.cs
  AL    src/log4net/LogManager.cs
  AL    src/log4net/Plugin/PluginCollection.cs
  AL    src/log4net/Plugin/IPluginFactory.cs
  AL    src/log4net/Plugin/PluginMap.cs
  AL    src/log4net/Plugin/IPlugin.cs
  AL    src/log4net/Plugin/PluginSkeleton.cs
  AL    src/log4net/Plugin/RemoteLoggingServerPlugin.cs
  AL    src/log4net/Core/LevelEvaluator.cs
  AL    src/log4net/Core/SecurityContextProvider.cs
  AL    src/log4net/Core/CompactRepositorySelector.cs
 !????? src/log4net/Core/FixFlags.cs
  AL    src/log4net/Core/IAppenderAttachable.cs
  AL    src/log4net/Core/SecurityContext.cs
  AL    src/log4net/Core/ILoggerWrapper.cs
  AL    src/log4net/Core/ErrorCode.cs
  AL    src/log4net/Core/LogException.cs
  AL    src/log4net/Core/IFixingRequired.cs
  AL    src/log4net/Core/ILogger.cs
  AL    src/log4net/Core/MethodItem.cs
  AL    src/log4net/Core/LevelCollection.cs
  AL    src/log4net/Core/IOptionHandler.cs
  AL    src/log4net/Core/StackFrameItem.cs
  AL    src/log4net/Core/ExceptionEvaluator.cs
  AL    src/log4net/Core/IErrorHandler.cs
  AL    src/log4net/Core/ITriggeringEventEvaluator.cs
  AL    src/log4net/Core/WrapperMap.cs
  AL    src/log4net/Core/LevelMap.cs
  AL    src/log4net/Core/LogImpl.cs
  AL    src/log4net/Core/TimeEvaluator.cs
  AL    src/log4net/Core/LoggerWrapperImpl.cs
  AL    src/log4net/Core/LoggingEvent.cs
  AL    src/log4net/Core/LoggerManager.cs
  AL    src/log4net/Core/LocationInfo.cs
  AL    src/log4net/Core/IRepositorySelector.cs
  AL    src/log4net/Core/Level.cs
  AL    src/log4net/Core/DefaultRepositorySelector.cs
 !????? src/log4net/log4net.csproj
  AL    src/log4net/NDC.cs
  AL    src/log4net/GlobalContext.cs
  AL    src/log4net/assembly/bin.xml
  AL    src/log4net/Util/ContextPropertiesBase.cs
  AL    src/log4net/Util/ILogExtensions.cs
  AL    src/log4net/Util/ThreadContextProperties.cs
  AL    src/log4net/Util/PatternConverter.cs
  AL    src/log4net/Util/ReadOnlyPropertiesDictionary.cs
  AL    src/log4net/Util/CyclicBuffer.cs
  AL    src/log4net/Util/ReusableStringWriter.cs
  AL    src/log4net/Util/QuietTextWriter.cs
  AL    src/log4net/Util/LevelMappingEntry.cs
  AL    src/log4net/Util/GlobalContextProperties.cs
  AL    src/log4net/Util/SystemStringFormat.cs
  AL    src/log4net/Util/TextWriterAdapter.cs
  AL    src/log4net/Util/ThreadContextStack.cs
  AL    src/log4net/Util/ReaderWriterLock.cs
  AL    src/log4net/Util/EmptyDictionary.cs
  AL    src/log4net/Util/ThreadContextStacks.cs
  AL    src/log4net/Util/NullSecurityContext.cs
  AL    src/log4net/Util/PatternString.cs
  AL    src/log4net/Util/WindowsSecurityContext.cs
  AL    src/log4net/Util/ProtectCloseTextWriter.cs
  AL    src/log4net/Util/OptionConverter.cs
  AL    src/log4net/Util/CountingQuietTextWriter.cs
  AL    src/log4net/Util/SystemInfo.cs
  AL    src/log4net/Util/CompositeProperties.cs
  AL    src/log4net/Util/TypeConverters/IPAddressConverter.cs
  AL    src/log4net/Util/TypeConverters/IConvertFrom.cs
  AL    src/log4net/Util/TypeConverters/IConvertTo.cs
  AL    src/log4net/Util/TypeConverters/TypeConverter.cs
  AL    src/log4net/Util/TypeConverters/EncodingConverter.cs
  AL    src/log4net/Util/TypeConverters/PatternLayoutConverter.cs
  AL    src/log4net/Util/TypeConverters/TypeConverterAttribute.cs
  AL    src/log4net/Util/TypeConverters/BooleanConverter.cs
  AL    src/log4net/Util/TypeConverters/PatternStringConverter.cs
  AL    src/log4net/Util/TypeConverters/ConversionNotSupportedException.cs
  AL    src/log4net/Util/TypeConverters/ConverterRegistry.cs
  AL    src/log4net/Util/LevelMapping.cs
  AL    src/log4net/Util/AppenderAttachedImpl.cs
  AL    src/log4net/Util/Transform.cs
  AL    src/log4net/Util/LogicalThreadContextProperties.cs
  AL    src/log4net/Util/FormattingInfo.cs
  AL    src/log4net/Util/NullEnumerator.cs
  AL    src/log4net/Util/LogicalThreadContextStack.cs
  AL    src/log4net/Util/OnlyOnceErrorHandler.cs
  AL    src/log4net/Util/ConverterInfo.cs
  AL    src/log4net/Util/PropertiesDictionary.cs
  AL    src/log4net/Util/LogLog.cs
  AL    src/log4net/Util/PatternStringConverters/DatePatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/AppSettingPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/EnvironmentPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/UtcDatePatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/ProcessIdPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/UserNamePatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/EnvironmentFolderPathPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/NewLinePatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/RandomStringPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/PropertyPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/AppDomainPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/LiteralPatternConverter.cs
  AL    src/log4net/Util/PatternStringConverters/IdentityPatternConverter.cs
  AL    src/log4net/Util/NullDictionaryEnumerator.cs
  AL    src/log4net/Util/LogicalThreadContextStacks.cs
  AL    src/log4net/Util/EmptyCollection.cs
  AL    src/log4net/Util/PropertyEntry.cs
  AL    src/log4net/Util/NativeError.cs
  AL    src/log4net/Util/PatternParser.cs
  AL    src/log4net/ObjectRenderer/IObjectRenderer.cs
  AL    src/log4net/ObjectRenderer/RendererMap.cs
  AL    src/log4net/ObjectRenderer/DefaultRenderer.cs
  AL    src/log4net/DateFormatter/IDateFormatter.cs
  AL    src/log4net/DateFormatter/DateTimeDateFormatter.cs
  AL    src/log4net/DateFormatter/Iso8601DateFormatter.cs
  AL    src/log4net/DateFormatter/SimpleDateFormatter.cs
  AL    src/log4net/DateFormatter/AbsoluteTimeDateFormatter.cs
  AL    src/log4net/NetStandardCompatibilityExtensions.cs
  AL    src/log4net/ILog.cs
  AL    src/log4net/Layout/PatternLayout.cs
  AL    src/log4net/Layout/SimpleLayout.cs
  AL    src/log4net/Layout/RawUtcTimeStampLayout.cs
  AL    src/log4net/Layout/RawTimeStampLayout.cs
  AL    src/log4net/Layout/RawPropertyLayout.cs
  AL    src/log4net/Layout/LayoutSkeleton.cs
  AL    src/log4net/Layout/Pattern/MessagePatternConverter.cs
  AL    src/log4net/Layout/Pattern/DatePatternConverter.cs
  AL    src/log4net/Layout/Pattern/AspNetRequestPatternConverter.cs
  AL    src/log4net/Layout/Pattern/UtcDatePatternConverter.cs
  AL    src/log4net/Layout/Pattern/RelativeTimePatternConverter.cs
  AL    src/log4net/Layout/Pattern/ThreadPatternConverter.cs
  AL    src/log4net/Layout/Pattern/AspNetPatternConverter.cs
  AL    src/log4net/Layout/Pattern/NamedPatternConverter.cs
  AL    src/log4net/Layout/Pattern/TypeNamePatternConverter.cs
  AL    src/log4net/Layout/Pattern/FullLocationPatternConverter.cs
  AL    src/log4net/Layout/Pattern/UserNamePatternConverter.cs
  AL    src/log4net/Layout/Pattern/NdcPatternConverter.cs
  AL    src/log4net/Layout/Pattern/LoggerPatternConverter.cs
  AL    src/log4net/Layout/Pattern/StackTraceDetailPatternConverter.cs
  AL    src/log4net/Layout/Pattern/LevelPatternConverter.cs
  AL    src/log4net/Layout/Pattern/AspNetSessionPatternConverter.cs
  AL    src/log4net/Layout/Pattern/PropertyPatternConverter.cs
  AL    src/log4net/Layout/Pattern/AspNetContextPatternConverter.cs
  AL    src/log4net/Layout/Pattern/PatternLayoutConverter.cs
  AL    src/log4net/Layout/Pattern/LineLocationPatternConverter.cs
  AL    src/log4net/Layout/Pattern/AppDomainPatternConverter.cs
  AL    src/log4net/Layout/Pattern/FileLocationPatternConverter.cs
  AL    src/log4net/Layout/Pattern/AspNetCachePatternConverter.cs
  AL    src/log4net/Layout/Pattern/IdentityPatternConverter.cs
  AL    src/log4net/Layout/Pattern/MethodLocationPatternConverter.cs
  AL    src/log4net/Layout/Pattern/StackTracePatternConverter.cs
  AL    src/log4net/Layout/Pattern/ExceptionPatternConverter.cs
  AL    src/log4net/Layout/XmlLayout.cs
  AL    src/log4net/Layout/IRawLayout.cs
  AL    src/log4net/Layout/ILayout.cs
  AL    src/log4net/Layout/XmlLayoutBase.cs
  AL    src/log4net/Layout/DynamicPatternLayout.cs
  AL    src/log4net/Layout/Layout2RawLayoutAdapter.cs
  AL    src/log4net/Layout/RawLayoutConverter.cs
  AL    src/log4net/Layout/ExceptionLayout.cs
  AL    src/log4net/Layout/XmlLayoutSchemaLog4j.cs
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/nunit.engine.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/System.Security.Permissions.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.pdb
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.DotNet.InternalAbstractions.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/testhost.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/System.Xml.XPath.XmlDocument.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.xml
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/NuGet.Frameworks.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/nunit.engine.api.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/NUnit3.TestAdapter.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log.1
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/nunit.framework.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/NUnit3.TestAdapter.pdb
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_default.log
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log.2
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/System.Security.Cryptography.ProtectedData.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.Tests.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/nunit.engine.core.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/System.Configuration.ConfigurationManager.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/Newtonsoft.Json.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.Tests.pdb
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/nunit.engine.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.pdb
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.xml
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/nunit.engine.api.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/NUnit3.TestAdapter.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/NUnit3.TestAdapter.pdb
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.Tests.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.Tests.pdb
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/nunit.engine.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.pdb
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.xml
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.3
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/nunit.engine.api.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/NUnit3.TestAdapter.dll
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.1
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/NUnit3.TestAdapter.pdb
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_default.log
 !????? src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.2
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.Tests.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/nunit.engine.core.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.dll
  B     src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.Tests.pdb
  B     src/log4net.Tests/bin/CrossPlatform/net462/log4net.pdb
 !????? src/log4net.Tests/bin/CrossPlatform/net462/log4net.xml
  B     src/log4net.Tests/bin/CrossPlatform/net462/nunit.framework.dll
  B     src/log4net.Tests/bin/CrossPlatform/net462/log4net.Tests.dll
  B     src/log4net.Tests/bin/CrossPlatform/net462/log4net.dll
  B     src/log4net.Tests/bin/CrossPlatform/net462/log4net.Tests.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/nunit.engine.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/it/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/System.Security.Permissions.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.DotNet.InternalAbstractions.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.VisualStudio.TestPlatform.Common.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.TestPlatform.CommunicationUtilities.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.VisualStudio.CodeCoverage.Shim.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/testhost.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/System.Xml.XPath.XmlDocument.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/runtimes/win/lib/netstandard2.0/System.Security.Cryptography.ProtectedData.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.TestPlatform.CoreUtilities.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.TestPlatform.PlatformAbstractions.dll
 !????? src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.xml
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.TestPlatform.Utilities.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/NuGet.Frameworks.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/nunit.engine.api.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/NUnit3.TestAdapter.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/nunit.framework.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/es/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/NUnit3.TestAdapter.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/de/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/System.Security.Cryptography.ProtectedData.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.Tests.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/nunit.engine.core.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Microsoft.TestPlatform.CrossPlatEngine.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/System.Configuration.ConfigurationManager.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/Newtonsoft.Json.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.Tests.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/nunit.engine.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.pdb
 !????? src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.xml
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/nunit.engine.api.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/NUnit3.TestAdapter.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/NUnit3.TestAdapter.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.Tests.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.Tests.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/nunit.engine.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.pdb
 !????? src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.xml
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/nunit.engine.api.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/NUnit3.TestAdapter.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/NUnit3.TestAdapter.pdb
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.Tests.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/nunit.engine.core.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.dll
  B     src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.Tests.pdb
  B     src/log4net.Tests/bin/Debug/net462/log4net.pdb
 !????? src/log4net.Tests/bin/Debug/net462/log4net.xml
  B     src/log4net.Tests/bin/Debug/net462/nunit.framework.dll
  B     src/log4net.Tests/bin/Debug/net462/log4net.Tests.dll
  B     src/log4net.Tests/bin/Debug/net462/log4net.dll
  B     src/log4net.Tests/bin/Debug/net462/log4net.Tests.pdb
  AL    src/log4net.Tests/AssemblyInfo.cs
 !????? src/log4net.Tests/NUnitTestRunnerInitializer.cs
  AL    src/log4net.Tests/Appender/AdoNet/Log4NetConnection.cs
  AL    src/log4net.Tests/Appender/AdoNet/Log4NetTransaction.cs
  AL    src/log4net.Tests/Appender/AdoNet/Log4NetCommand.cs
  AL    src/log4net.Tests/Appender/AdoNet/Log4NetParameter.cs
  AL    src/log4net.Tests/Appender/AdoNet/Log4NetParameterCollection.cs
  AL    src/log4net.Tests/Appender/DebugAppenderTest.cs
  AL    src/log4net.Tests/Appender/RollingFileAppenderTest.cs
  AL    src/log4net.Tests/Appender/AdoNetAppenderTest.cs
  AL    src/log4net.Tests/Appender/CountingAppender.cs
  AL    src/log4net.Tests/Appender/EventLogAppenderTest.cs
  AL    src/log4net.Tests/Appender/BufferingAppenderTest.cs
  AL    src/log4net.Tests/Appender/AppenderCollectionTest.cs
  AL    src/log4net.Tests/Appender/RemotingAppenderTest.cs
  AL    src/log4net.Tests/Appender/TraceAppenderTest.cs
  AL    src/log4net.Tests/Appender/RecursiveLoggingTest.cs
  AL    src/log4net.Tests/Appender/SmtpPickupDirAppenderTest.cs
  AL    src/log4net.Tests/Appender/StringAppender.cs
  AL    src/log4net.Tests/Appender/MemoryAppenderTest.cs
  AL    src/log4net.Tests/Appender/EventRaisingAppender.cs
  AL    src/log4net.Tests/Utils.cs
  AL    src/log4net.Tests/Filter/FilterTest.cs
  AL    src/log4net.Tests/Hierarchy/Hierarchy.cs
  AL    src/log4net.Tests/Hierarchy/XmlHierarchyConfiguratorTest.cs
  AL    src/log4net.Tests/Hierarchy/Logger.cs
 !????? src/log4net.Tests/log4net.Tests.csproj
  AL    src/log4net.Tests/Core/ShutdownTest.cs
  AL    src/log4net.Tests/Core/EvaluatorTest.cs
  AL    src/log4net.Tests/Core/StringFormatTest.cs
  AL    src/log4net.Tests/Core/FixingTest.cs
  AL    src/log4net.Tests/Context/ThreadContextTest.cs
  AL    src/log4net.Tests/Context/LogicalThreadContextTest.cs
  AL    src/log4net.Tests/LoggerRepository/ConfigurationMessages.cs
  AL    src/log4net.Tests/Util/PatternConverterTest.cs
  AL    src/log4net.Tests/Util/PropertiesDictionaryTest.cs
  AL    src/log4net.Tests/Util/EnvironmentPatternConverterTest.cs
  AL    src/log4net.Tests/Util/CyclicBufferTest.cs
  AL    src/log4net.Tests/Util/SystemInfoTest.cs
  AL    src/log4net.Tests/Util/RandomStringPatternConverterTest.cs
  AL    src/log4net.Tests/Util/PatternStringTest.cs
  AL    src/log4net.Tests/Util/TransformTest.cs
  AL    src/log4net.Tests/Util/LogLogTest.cs
  AL    src/log4net.Tests/DateFormatter/AbsoluteTimeDateFormatterTest.cs
  AL    src/log4net.Tests/Layout/XmlLayoutTest.cs
  AL    src/log4net.Tests/Layout/PatternLayoutTest.cs
  AL    src/log4net.Tests/Layout/DynamicPatternLayoutTest.cs
 !????? src/.idea/.idea.log4net/.idea/projectSettingsUpdater.xml
 !????? src/.idea/.idea.log4net/.idea/codeStyles/codeStyleConfig.xml
 !????? src/.idea/.idea.log4net/.idea/vcs.xml
 !????? src/.idea/.idea.log4net/.idea/workspace.xml
 !????? src/.idea/.idea.log4net/.idea/indexLayout.xml
 !????? src/.idea/.idea.log4net/.idea/misc.xml
 !????? src/.idea/.idea.log4net/.idea/.name
  B     build-tools/nuget.exe
  AL    log4net.build
 !????? README.md
  AL    build.cmd
  AL    pom.xml
  N     LICENSE
 
*****************************************************

 Printing headers for text files without a valid license header...
 
=====================================================
== File: appveyer.yml
=====================================================
version: 1.0.{build}
image: Visual Studio 2019
build_script:
- cmd: &gt;-
    npm ci
    npm test
    npm run release

artifacts:
- path: build/artifacts/*

=====================================================
== File: install-net-framework-sdk-3.5.ps1
=====================================================
#Enforce TLS 1.2 as Microsoft is deprecating all old TLS versions
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

if (-not (Test-Path dotnetfx35.exe)) {
    Write-Host &quot;Downloading dotnetfx35.exe&quot;
    Invoke-WebRequest -Uri &quot;https://download.microsoft.com/download/2/0/E/20E90413-712F-438C-988E-FDAA79A8AC3D/dotnetfx35.exe&quot; -OutFile dotnetfx35.exe
}

Write-Host &quot;Running dotnetfx35.exe&quot;
$process = Start-Process -FilePath dotnetfx35.exe -ArgumentList &quot;/wait&quot;,&quot;/passive&quot; -Wait -PassThru
if ($process.ExitCode -eq 0) {
    Write-Host &quot;dotnetfx35 installed&quot;
} else {
    Write-Host &quot;dotnetfx35 installer returned exit code ${process.ExitCode}&quot;
}

if (-not (Test-Path dotnetfx35client.exe)) {
    Write-host &quot;Downloading dotnetfx35client.exe&quot;
    Invoke-WebRequest -Uri &quot;https://download.microsoft.com/download/c/d/c/cdc0f321-4f72-4a08-9bac-082f3692ecd9/DotNetFx35Client.exe&quot; -OutFile dotnetfx35client.exe
}

Write-Host &quot;Running dotnetfx35client.exe&quot;
$process = Start-Process -FilePath dotnetfx35client.exe -ArgumentList &quot;/quiet&quot;,&quot;/passive&quot; -Wait -PassThru
if ($process.ExitCode -eq 0) {
    Write-Host &quot;dotnetfx35client installed&quot;
} else {
    Write-Host &quot;dotnetfx35client installer returned exit code ${process.ExitCode}&quot;
}

=====================================================
== File: install-dotnet-core-sdk-1.1.ps1
=====================================================
#Enforce TLS 1.2 as Microsoft is deprecating all old TLS versions
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12;

$installer=&quot;dotnet-dev-win-x64.1.1.14.exe&quot;
Write-Host &quot;Downloading $installer&quot;
Invoke-WebRequest -Uri &quot;https://download.visualstudio.microsoft.com/download/pr/c6b9a396-5e7a-4b91-86f6-f9e8df3bf1dd/6d61addfd6069e404981bede03f8f4f9/$installer&quot; -OutFile $installer
Write-Host &quot;Running $installer&quot;
Start-Process -FilePath $installer -ArgumentList &quot;/wait&quot;,&quot;/passive&quot; -Wait
Write-Host &quot;dotnet core sdk 1.1 installed&quot;


=====================================================
== File: doc/RELEASING.md
=====================================================
Log4Net Release procedure
---

This serves to document the release procedure for log4net, which is probably
more of interest to maintainers than anyone else, but I've found that there
are enough moving parts and time between releases to make the process more
difficult than it needs to be. Some parts are automated and others can be in
the future.

Assuming the code is in a place where a release can be made, for the imagined
release version 2.0.123:

1. Update the documentation under `src/site`
    - minimally, this means at least:
        - `src/site/xdoc/release/release-notes.xml`
            - copy an existing release section &amp; think about:
                - what does this release change?
                - bug fixes?
                - enhancements
                - don't forget to mention contributors
                    - people who reported issues
                    - people who created pull requests
                    - people who suggested code that was implemented
        - `src/site/xdoc/download_log4net.xml`
            - you should be able to search &amp; replace on the prior version
                for the new one you're about to create
2. Update the log4net.csproj file with this new version
3. Build release artifacts with `npm run release`
    - if this doesn't work, you may need to `npm ci` first!
    - currently, this _must_ happen on a windows machine because of older
        .net framework requirements which cannot be met on a Linux machine
        (or at least, I haven't figured out how - in particular CF)
4. Sign release artifacts (zips &amp; nupkg) under `build/artifacts`
    - eg `gpg --argmor --output log4net-2.0.123.nupkg.asc --detach-sig log4net-2.0.123.nupkg`
    - there is an accompanying `sign-log4net-libraries.sh` which you could invoke if you cd
        into the `build/artifacts` folder
        - I build on Windows and sign on Linux as my build machine belongs to my company
            and I don't want to store keys there. Always protect your keys fervently!
5. Clone out the log4net doc repo (https://github.com/apache/logging-log4net-site)
    - check out the `asf-staging` branch
    - create a folder which includes the version, eg `log4net-2.0.123`
6. Copy the contents of `target/site` from this repo into the folder created in (5)
7. Update the symlinks in the base of the docs repo, ie:
    - 2.0.x -&gt; 2.0.123
    - 2.x -&gt; 2.0.123
8. update the `doap_log4net.rdf` to point to the new release 
    - (copy-paste-modify an existing release)
9. update the `.htaccess` file
    - the trailing RewriteRule should point to the new log4net-2.0.123 folder
10. push the `asf-staging` branch to github and wait a bit 

=====================================================
== File: doc/sign-log4net-libraries.sh
=====================================================
#!/bin/bash
# see https://infra.apache.org/release-signing#openpgp-ascii-detach-sig
DID_SOMETHING=0
for f in *log4net*.nupkg *log4net*.zip; do
  DID_SOMETHING=1
  echo &quot;signing: $f&quot;
  gpg --armor --output $f.asc --detach-sig $f
done

if test &quot;$DID_SOMETHING&quot; = &quot;0&quot;; then
  echo &quot;No log4net artifacts found - are you sure you're in the right directory?&quot;
  exit 2
fi

=====================================================
== File: doc/BUILDING.md
=====================================================
## Building log4net

Log4net provides support for a wide array of targets, including
- older .net 2 and 3.5 (including client profiles)
- more modern net40/net45
- netstandard1.3/2.0

As such, it does require a relatively full .net environment on Windows to build.

Options:
- build locally. Suggested environment:
    - Pre-requisites:
        - Visual Studio 2019 Build Tools
            - include desktop targets at least
            - include dotnet core targets or download and install
                the latest dotnet sdk (you will need at least v2.1)
            - note that build is possible with VS2022 build tools, but I had to
                install VS2019 build tools _as well_ to get msbuild to recognise 
                the legacy net35-profile target
        - Ensure you have .NET Framework 3.5 SP1 installed
            - on Win10+, this can only be installed via Add/Remove Windows Components
            - on other platforms, see https://dotnet.microsoft.com/download/dotnet-framework/net35-sp1
            - Building against .net 2/3.5, especially Client Profile, is not supported on Mono
        - Log4Net supports some older, out-of-support .net SDKs, particularly
          dotnet core 1.1 and .net framework client profiles for 3.5 and 4.0.
          There are helper powershell scripts in the root of this
          repository to assist with obtaining and installing these
          SDKs from Microsoft servers. Please see:
            - [install-dotnet-core-sdk-1.1.ps1](install-dotnet-core-sdk-1.1.ps1)
            - [install-net-framework-sdk-3.5.ps1](install-net-framework-sdk-3.5.ps1)
    - Binaries can be built with a Visual Studio or Rider installation
    - Binaries, packages and a release zip can be built via commandline
        - Ensure that you have a reasonably modern NodeJS installed (at least version 8+)
            - `npm ci`
            - `npm run build`
            - optionally `npm test` to run all tests
            - optionally `npm run release` to generate release artifacts
- build via docker for windows, using the `build-with-docker-for-windows.bat` script
- build via the vs2019 Windows AppVeyer image. There is an appveyer.yml file
    included which (should) build if you set up AppVeyer to track
    your fork. AppVeyer is free for open-source projects.
    (TODO: should have a link to the official AppVeyer build)

## Updating the site

Log4Net uses Maven to build the site. Source artifacts can be found under `src/site`.
Building the site can be accomplished with `npm run build-site`. You should have maven
installed:
- Windows: get it from Scoop
- OSX: get it from Homebrew

=====================================================
== File: doc/ReleaseInstructions-legacy.txt
=====================================================
THIS DOCUMENT NEEDS TO BE ADAPTED NOW WE'VE MOVED TO GIT

This document is a work in progress and was created in parallel to the
release of Apache log4net 1.2.11 and adapted for 2.0.6.

Prereqs
=======

* make sure you have all the required software around.  For the 2.0.6
  release this meant

  - you may need a couple of Windows or Linux boxes in order to be
    able to build all target frameworks.

  - Things you need

    o a Subversion command line client

    o NAnt 0.92 or better http://nant.sourceforge.net/

      Make sure to unblock the ZIP before you extract it.

    o Some recent version of a Java runtime environment (Java5 at
      minimum)

    o Apache Maven 3.x http://maven.apache.org/

      You may want to set some environment variables like Path (to
      include Maven's and NAnt's bin directories), M2_HOME and
      JAVA_HOME to make things easier.

    o .NET Framework 3.5SP1 and SDK 2.0

      As of October 2011 this is available from
      &lt;http://msdn.microsoft.com/en-us/netframework/&gt;

    o .NET Framework and SDK 4.0

      As of October 2011 this is available from
      &lt;http://msdn.microsoft.com/en-us/netframework/&gt;

    o .NET Core Developer Kit available from https://www.microsoft.com/net/core

    o Mono available from http://www.mono-project.com/download/

      Unfortunately NAnt 0.92 has issues with Mono that is too recent,
      I used a Ubuntu 14.04 installation and installed NAnt and Mono
      via the Ubuntu Debian packages. It comes with Mono 3.2.8.

    o Sandcastle Help File Builder with its Dependencies

=====================================================
== File: doc/CONTRIBUTING.md
=====================================================
Contributing to Apache log4net
======================

You have found a bug or you have an idea for a cool new feature? Contributing code is a great way to give something back to
the open source community. Before you dig right into the code there are a few guidelines that we need contributors to
follow so that we can have a chance of keeping on top of things.

Getting Started
---------------

+ Make sure you have a [JIRA account](https://issues.apache.org/jira/).
+ Make sure you have a [GitHub account](https://github.com/signup/free).
+ If you're planning to implement a new feature it makes sense to discuss your changes on the [dev list](https://logging.apache.org/log4net/mail-lists.html) first. This way you can make sure you're not wasting your time on something that isn't considered to be in Apache log4net's scope.
+ Submit a ticket for your issue, assuming one does not already exist.
  + Clearly describe the issue including steps to reproduce when it is a bug.
  + Make sure you fill in the earliest version that you know has the issue.
+ Fork the repository on GitHub.

Making Changes
--------------

+ Create a topic branch from where you want to base your work (this is usually the master/trunk branch).
+ Make commits of logical units.
+ Respect the original code style:
  + Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
  + Check for unnecessary whitespace with git diff --check before committing.
+ Make sure your commit messages are in the proper format. Your commit message should contain the key of the JIRA issue.
+ Make sure you have added the necessary tests for your changes.
+ Run all the tests with `nant` inside the `tests` directory to assure nothing else was accidentally broken.

Making Trivial Changes
----------------------

For changes of a trivial nature to comments and documentation, it is not always necessary to create a new ticket in JIRA.
In this case, it is appropriate to start the first line of a commit with '(doc)' instead of a ticket number.

Submitting Changes
------------------

+ Sign the [Contributor License Agreement][cla] if you haven't already.
+ Push your changes to a topic branch in your fork of the repository.
+ Submit a pull request to the repository in the apache organization.
+ Update your JIRA ticket and include a link to the pull request in the ticket.

Additional Resources
--------------------

+ [Apache log4net JIRA project page](https://issues.apache.org/jira/browse/LOG4NET)
+ [Contributor License Agreement][cla]
+ [General GitHub documentation](https://help.github.com/)

=====================================================
== File: build-with-docker-for-windows.bat
=====================================================
docker run -v %~dp0%:C:\dev -v %USERPROFILE%\.nuget\packages:C:\packages -t davydm/net-build-tools:vs2019 &quot;npm ci &amp;&amp; npm run build&quot;

=====================================================
== File: local-tasks/build-site.js
=====================================================
const
    gulp = requireModule(&quot;gulp&quot;),
    spawn = requireModule(&quot;spawn&quot;),
    env = requireModule(&quot;env&quot;),
    os = require(&quot;os&quot;),
    which = require(&quot;which&quot;);

gulp.task(&quot;build-site&quot;, async () =&gt; {
    let maven;
    try {
        maven = await which(&quot;mvn&quot;);
    } catch (e) {
        let extra;
        switch (os.platform()) {
            case &quot;win32&quot;:
                extra = &quot;You may install maven via chocolatey (https://chocolatey.org)&quot;;
                break;
            case &quot;darwin&quot;:
                extra = &quot;You may install maven via homebrew&quot;;
                break;
            default:
                extra = &quot;You should install maven with your package manager&quot;;
                break;
        }
        throw new Error(`Unable to find mvn in your path. ${extra}`);
    }

    return spawn(&quot;mvn&quot;, [ &quot;site&quot; ]);
});


=====================================================
== File: local-tasks/prepare-build-artifacts.js
=====================================================
const 
    gulp = requireModule(&quot;gulp&quot;);

gulp.task(&quot;prepare-build-artifacts&quot;, gulp.series(
    &quot;zip&quot;,
    &quot;prefix-build-artifacts&quot;,
    &quot;hash-build-artifacts&quot;
));

=====================================================
== File: local-tasks/hash-build-artifacts.js
=====================================================
const
    gulp = requireModule(&quot;gulp&quot;);

gulp.task(&quot;hash-build-artifacts&quot;, async () =&gt; {
    const
        path = require(&quot;path&quot;),
        crypto = require(&quot;crypto&quot;),
        { readFile, writeFile, ls, FsEntities } = require(&quot;yafs&quot;),
        artifactsFolder = path.join(&quot;build&quot;, &quot;artifacts&quot;);
    const
        buildArtifacts = await ls(artifactsFolder, {
            fullPaths: true,
            entities: FsEntities.files
        }),
        nupkg = buildArtifacts.find(p =&gt; p.match(/\.nupkg$/)),
        binaries = buildArtifacts.find(p =&gt; p.match(/apache-log4net-binaries-\d+\.\d+\.\d+.zip$/)),
        source = buildArtifacts.find(p =&gt; p.match(/apache-log4net-source-\d+\.\d+\.\d+.zip$/));

    if (!nupkg) {
        throw new Error(`apache-log4net nupkg not found in ${artifactsFolder}`);
    }
    if (!binaries) {
        throw new Error(`apache-log4net binaries zip not found in ${artifactsFolder}`);
    }
    if (!source) {
        throw new Error(`apache-log4net source zip not found in ${artifactsFolder}`);
    }

    await writeSHA512For(nupkg);
    await writeSHA512For(binaries);
    await writeSHA512For(source);

    function writeSHA512For(filepath) {
        return new Promise(async (resolve, reject) =&gt; {
            try {
                const
                    hash = crypto.createHash(&quot;sha512&quot;),
                    data = await readFile(filepath);
                hash.update(data);
                const
                    outfile = `${filepath}.sha512`,
                    hex = hash.digest(&quot;hex&quot;),
                    contents = `${hex} *${path.basename(filepath)}`;
                await writeFile(outfile, contents);
                resolve();
            } catch (e) {
                reject(e);
            }
        });
    }

=====================================================
== File: local-tasks/zip.js
=====================================================
const
  gulp = requireModule(&quot;gulp&quot;),
  promisify = requireModule(&quot;promisify-stream&quot;),
  readCsProjVersion = requireModule(&quot;read-csproj-version&quot;),
  target = &quot;build/artifacts&quot;,
  debug = require(&quot;gulp-debug&quot;),
  rename = require(&quot;gulp-rename&quot;),
  zip = require(&quot;gulp-zip&quot;);

gulp.task(&quot;zip&quot;, [&quot;zip-binaries&quot;, &quot;zip-source&quot;], () =&gt; Promise.resolve());

gulp.task(&quot;zip-binaries&quot;, async () =&gt; {
  const
    version = await readVersion(),
    baseDir = `apache-log4net-binaries-${version}`;
  return promisify(
    gulp.src([&quot;build/Release/**/*&quot;, &quot;LICENSE&quot;, &quot;NOTICE&quot;])
      .pipe(rename(path =&gt; {
        path.dirname = `${baseDir}/${path.dirname}`
      }))
      .pipe(zip(`${baseDir}.zip`))
      .pipe(gulp.dest(target))
  );
});

gulp.task(&quot;zip-source&quot;, async () =&gt; {
  const
    version = await readVersion(),
    baseDir = `apache-log4net-source-${version}`;

  return promisify(
    gulp.src([
      &quot;**/*&quot;,
      &quot;!**/obj/**/*&quot;,
      &quot;!**/bin/**/*&quot;,
      &quot;!node_modules&quot;,
      &quot;!node_modules/**/*&quot;,
      &quot;!build-tools&quot;,
      &quot;!build-tools/**/*&quot;,
      &quot;!build&quot;,
      &quot;!build/**/*&quot;,
      &quot;!.idea&quot;,
      &quot;!.idea/**/*&quot;,
      &quot;!*.exe&quot;
    ])
      .pipe(rename(path =&gt; {
        path.dirname = `${baseDir}/${path.dirname}`
      }))
      .pipe(zip(`${baseDir}.zip`))
      .pipe(gulp.dest(target))

=====================================================
== File: local-tasks/update-version-info.js
=====================================================
const
  gulp = requireModule(&quot;gulp&quot;);

gulp.task(&quot;update-version-info&quot;, async () =&gt; {
  // the version as per the .csproj is the correct version, but there
  // are other places where the version string is set via [assembly]
  // attributes, so we need to re-align them all
  const
    Git = require(&quot;simple-git/promise&quot;),
    readTextFile = requireModule(&quot;read-text-file&quot;),
    writeTextFile = requireModule(&quot;write-text-file&quot;),
    readCsProjVersion = requireModule(&quot;read-csproj-version&quot;),
    currentVersion = await readCsProjVersion(&quot;src/log4net/log4net.csproj&quot;),
    assemblyInfo = &quot;src/log4net/AssemblyInfo.cs&quot;,
    assemblyVersionInfo = &quot;src/log4net/AssemblyVersionInfo.cs&quot;,
    versionString = sanitiseVersion(currentVersion);

  await updateVersionsIn(assemblyInfo, versionString);
  await updateVersionsIn(assemblyVersionInfo, versionString);

  const git = new Git(&quot;.&quot;);
  await git.add([
    assemblyInfo,
    assemblyVersionInfo
  ]);
  await git.commit(`:bookmark: update versioning to ${versionString}`);

  async function updateVersionsIn(
    filePath,
    newVersion
  ) {
    const
      contents = await readTextFile(filePath),
      updated = contents
        // specific matches for &quot;x.x.x.x&quot;
        .replace(/&quot;\d+\.\d+\.\d+\.\d+&quot;/g, `&quot;${newVersion}&quot;`)
        // matches for &quot;x.x.x.x- as found in AssemblyVersionInfo.cs
        .replace(/&quot;\d+\.\d+\.\d+\.\d+-/g, `&quot;${newVersion}-`);
    await writeTextFile(filePath, updated);
  }

  function sanitiseVersion(version) {
    const parts = version.split(&quot;.&quot;);
    while (parts.length &lt; 4) {
      parts.push(&quot;0&quot;);
    }
    return parts.slice(0, 4).join(&quot;.&quot;);
  }
});


=====================================================
== File: local-tasks/prefix-build-artifacts.js
=====================================================
const { renameSync } = require(&quot;fs&quot;);

const gulp = requireModule(&quot;gulp&quot;);

gulp.task(&quot;prefix-build-artifacts&quot;, async () =&gt; {
    // prefixes build artifacts with 'apache-'
    const
        { ls, rename, FsEntities } = require(&quot;yafs&quot;),
        path = require(&quot;path&quot;),
        artifactsFolder = path.join(&quot;build/artifacts&quot;),
        contents = await ls(artifactsFolder, { fullPaths: true, entities: FsEntities.files });
    for (let item of contents) {
        const basename = path.basename(item);
        if (basename.match(/^apache-/)) {
            continue;
        }
        const newName = path.join(
            path.dirname(item),
            `apache-${basename}`
        );
        await rename(item, newName, true);
    }
});

=====================================================
== File: src/Directory.Build.props
=====================================================
&lt;Project&gt;
    &lt;PropertyGroup&gt;
        &lt;UseSharedCompilation&gt;true&lt;/UseSharedCompilation&gt;
    &lt;/PropertyGroup&gt;
&lt;/Project&gt;

=====================================================
== File: src/integration-testing/log4net-611-lib/DerivedAppender.cs
=====================================================
&#xfeff;using log4net.Appender;
using log4net.Core;
using log4net.Layout;

namespace log4net_611_lib;

public class DerivedAppender: RollingFileAppender
{
    protected override void Append(LoggingEvent loggingEvent)
    {
        loggingEvent.Properties[&quot;appender-class-name&quot;] = nameof(DerivedAppender);
        base.Append(loggingEvent);
    }
}

=====================================================
== File: src/integration-testing/log4net-611-lib/log4net-611-lib.csproj
=====================================================
&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;

  &lt;PropertyGroup&gt;
    &lt;TargetFramework&gt;netstandard2.0&lt;/TargetFramework&gt;
    &lt;RootNamespace&gt;log4net_611_lib&lt;/RootNamespace&gt;
    &lt;ImplicitUsings&gt;disable&lt;/ImplicitUsings&gt;
    &lt;Nullable&gt;disable&lt;/Nullable&gt;
    &lt;LangVersion&gt;latest&lt;/LangVersion&gt;
  &lt;/PropertyGroup&gt;

  &lt;ItemGroup&gt;
    &lt;PackageReference Include=&quot;log4net&quot; Version=&quot;2.0.14&quot; /&gt;
  &lt;/ItemGroup&gt;

&lt;/Project&gt;

=====================================================
== File: src/integration-testing/log4net-611-main/log4net.config
=====================================================
&lt;log4net&gt;
  &lt;appender name=&quot;LogFileAppenderXML&quot; type=&quot;log4net_611_lib.DerivedAppender&quot;&gt;			
    &lt;file value=&quot;Logs\.xml&quot; /&gt;
    &lt;datePattern value=&quot;yyyy-MM-dd-'Xyz'&quot; /&gt;
    &lt;appendToFile value=&quot;true&quot; /&gt;
    &lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&gt;			
    &lt;rollingStyle value=&quot;Composite&quot; /&gt;
    &lt;maxSizeRollBackups value=&quot;40&quot; /&gt;
    &lt;maximumFileSize value=&quot;1KB&quot; /&gt;
    &lt;preserveLogFileNameExtension value=&quot;true&quot; /&gt;
    &lt;staticLogFileName value=&quot;false&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
      &lt;conversionPattern value=&quot;[file] %property{appender-class-name} %message%newline&quot; /&gt;
    &lt;/layout&gt;
    &lt;immediateFlush value=&quot;true&quot; /&gt;
  &lt;/appender&gt;
  &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;
    &lt;target value=&quot;Console.Out&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
      &lt;conversionPattern value=&quot;[console] %message%newline&quot; /&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;
  &lt;root&gt;
    &lt;level value=&quot;ALL&quot;/&gt;
    &lt;appender-ref ref=&quot;LogFileAppenderXML&quot; /&gt;
    &lt;appender-ref ref=&quot;ConsoleAppender&quot; /&gt;
  &lt;/root&gt;
&lt;/log4net&gt;    

=====================================================
== File: src/integration-testing/log4net-611-main/Program.cs
=====================================================
&#xfeff;using System.Reflection;
using log4net;
using log4net.Config;
using log4net_611_lib;

var appPath = new Uri(Assembly.GetExecutingAssembly().Location).LocalPath;
var appFolder = Path.GetDirectoryName(appPath);
// force loading the assembly, otherwise the appender type isn't found later
Assembly.LoadFile(&quot;log4net-611-lib.dll&quot;);
if (appFolder is null)
{
    throw new InvalidOperationException(&quot;Can't find myself&quot;);
}

Assembly.LoadFile(Path.Combine(appFolder, &quot;log4net-611-lib.dll&quot;));

var configFile = Path.Combine(appFolder, &quot;log4net.config&quot;);
if (!File.Exists(configFile))
{
    throw new InvalidOperationException($&quot;log4net.config not found at {configFile}&quot;);
}

if (Directory.Exists(&quot;Logs&quot;))
{
    Console.WriteLine(&quot;Clearing out old logs...&quot;);
    foreach (var file in Directory.EnumerateFiles(&quot;Logs&quot;))
    {
        File.Delete(file);
    }
}

var info = new FileInfo(configFile);
var logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
XmlConfigurator.ConfigureAndWatch(
    logRepo,
    info
);

var logger = LogManager.GetLogger(typeof(Program));

Console.WriteLine(&quot;logging...&quot;);
for (var i = 0; i &lt; 10; i++)
{
    logger.Info($&quot;test log {i}&quot;);
}


foreach (var file in Directory.EnumerateFiles(&quot;Logs&quot;))
{
    Console.WriteLine($&quot;log file: {file}&quot;);

=====================================================
== File: src/integration-testing/log4net-611-main/log4net-611-main.csproj
=====================================================
&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;

  &lt;PropertyGroup&gt;
    &lt;OutputType&gt;Exe&lt;/OutputType&gt;
    &lt;TargetFrameworks&gt;net462;net6.0&lt;/TargetFrameworks&gt;
    &lt;RootNamespace&gt;log4net_611_main&lt;/RootNamespace&gt;
    &lt;ImplicitUsings&gt;enable&lt;/ImplicitUsings&gt;
    &lt;Nullable&gt;enable&lt;/Nullable&gt;
    &lt;LangVersion&gt;latest&lt;/LangVersion&gt;
  &lt;/PropertyGroup&gt;

  &lt;ItemGroup&gt;
    &lt;ProjectReference Include=&quot;..\log4net-611-lib\log4net-611-lib.csproj&quot; /&gt;
  &lt;/ItemGroup&gt;

  &lt;ItemGroup&gt;
    &lt;None Update=&quot;log4net.config&quot;&gt;
      &lt;CopyToOutputDirectory&gt;Always&lt;/CopyToOutputDirectory&gt;
    &lt;/None&gt;
  &lt;/ItemGroup&gt;

&lt;/Project&gt;

=====================================================
== File: src/integration-testing/log4net-673/log4net.config
=====================================================
&lt;log4net&gt;
  &lt;root&gt;
    &lt;level value=&quot;ALL&quot; /&gt;
    &lt;appender-ref ref=&quot;ColoredConsoleAppender&quot; /&gt;
    &lt;appender-ref ref=&quot;RollingLogFileAppender&quot; /&gt;
    &lt;appender-ref ref=&quot;ErrorLogFileAppender&quot; /&gt;
    &lt;appender-ref ref=&quot;WarnLogFileAppender&quot; /&gt;
  &lt;/root&gt;

  &lt;appender name=&quot;ColoredConsoleAppender&quot; type=&quot;log4net.Appender.ManagedColoredConsoleAppender&quot;&gt;
    &lt;mapping&gt;
      &lt;level value=&quot;INFO&quot; /&gt;
      &lt;forecolor value=&quot;White&quot; /&gt;
    &lt;/mapping&gt;
    &lt;mapping&gt;
      &lt;level value=&quot;WARN&quot; /&gt;
      &lt;forecolor value=&quot;Green&quot; /&gt;
    &lt;/mapping&gt;
    &lt;mapping&gt;
      &lt;level value=&quot;ERROR&quot; /&gt;
      &lt;forecolor value=&quot;Red&quot; /&gt;
    &lt;/mapping&gt;
    &lt;mapping&gt;
      &lt;level value=&quot;DEBUG&quot; /&gt;
      &lt;forecolor value=&quot;Yellow&quot; /&gt;
    &lt;/mapping&gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
      &lt;conversionpattern value=&quot;%date [%thread] %-5level - %message%newline&quot; /&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;

  &lt;appender name=&quot;RollingLogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
    &lt;file type=&quot;log4net.Util.PatternString&quot; value=&quot;log/ALL-Datamigration.log&quot; /&gt;
    &lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&gt;
    &lt;appendToFile value=&quot;true&quot; /&gt;
    &lt;rollingStyle value=&quot;Composite&quot; /&gt;
    &lt;maxSizeRollBackups value=&quot;100&quot; /&gt;
    &lt;maximumFileSize value=&quot;30MB&quot; /&gt;
    &lt;staticLogFileName value=&quot;true&quot; /&gt;
    &lt;preserveLogFileNameExtension value=&quot;true&quot;/&gt;
    &lt;datePattern value=&quot;ddMMyyyy&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
      &lt;conversionPattern value=&quot;%date [%thread] %-5level %logger - %message%newline&quot; /&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;

  &lt;appender name=&quot;ErrorLogFileAppender&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
    &lt;file type=&quot;log4net.Util.PatternString&quot; value=&quot;log/ERROR-Datamigration.log&quot; /&gt;
    &lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&gt;
    &lt;appendToFile value=&quot;true&quot; /&gt;

=====================================================
== File: src/integration-testing/log4net-673/Program.cs
=====================================================
&#xfeff;using System;
using System.IO;
using System.Reflection;
using System.Threading;
using log4net;
using log4net.Config;

var appPath = new Uri(Assembly.GetExecutingAssembly().Location).LocalPath;
var appFolder = Path.GetDirectoryName(appPath);
// force loading the assembly, otherwise the appender type isn't found later
if (appFolder is null)
{
    throw new InvalidOperationException(&quot;Can't find myself&quot;);
}

var configFile = Path.Combine(appFolder, &quot;log4net.config&quot;);
if (!File.Exists(configFile))
{
    throw new InvalidOperationException($&quot;log4net.config not found at {configFile}&quot;);
}

if (Directory.Exists(&quot;log&quot;))
{
    Console.WriteLine(&quot;Clearing out old logs...&quot;);
    foreach (var file in Directory.EnumerateFiles(&quot;log&quot;))
    {
        File.Delete(file);
    }
}

var info = new FileInfo(configFile);
var logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
XmlConfigurator.ConfigureAndWatch(
    logRepo,
    info
);

var logger = LogManager.GetLogger(typeof(Program));

Console.WriteLine(&quot;logging...&quot;);
for (var i = 0; i &lt; 10; i++)
{
    logger.Info($&quot;test log {i}&quot;);
    logger.Error($&quot;error log {i}&quot;);
    logger.Warn($&quot;warning log {i}&quot;);
}


foreach (var file in Directory.EnumerateFiles(&quot;log&quot;))
{

=====================================================
== File: src/integration-testing/log4net-673/log4net-673.csproj
=====================================================
&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;

  &lt;PropertyGroup&gt;
    &lt;OutputType&gt;Exe&lt;/OutputType&gt;
    &lt;TargetFramework&gt;net6.0&lt;/TargetFramework&gt;
    &lt;RootNamespace&gt;log4net_673&lt;/RootNamespace&gt;
    &lt;ImplicitUsings&gt;disable&lt;/ImplicitUsings&gt;
    &lt;Nullable&gt;disable&lt;/Nullable&gt;
  &lt;/PropertyGroup&gt;
  &lt;ItemGroup&gt;
    &lt;PackageReference Include=&quot;log4net&quot; Version=&quot;2.0.14&quot; /&gt;
  &lt;/ItemGroup&gt;
  &lt;ItemGroup&gt;
    &lt;None Update=&quot;log4net.config&quot;&gt;
      &lt;CopyToOutputDirectory&gt;Always&lt;/CopyToOutputDirectory&gt;
    &lt;/None&gt;
  &lt;/ItemGroup&gt;

&lt;/Project&gt;

=====================================================
== File: src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.config
=====================================================
&lt;log4net&gt;
  &lt;appender name=&quot;LogFileAppenderXML&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;			
    &lt;file value=&quot;Logs\.xml&quot; /&gt;
    &lt;datePattern value=&quot;yyyy-MM-dd-'Xyz'&quot; /&gt;
    &lt;appendToFile value=&quot;true&quot; /&gt;
    &lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&gt;			
    &lt;rollingStyle value=&quot;Composite&quot; /&gt;
    &lt;maxSizeRollBackups value=&quot;40&quot; /&gt;
    &lt;maximumFileSize value=&quot;1KB&quot; /&gt;
    &lt;preserveLogFileNameExtension value=&quot;true&quot; /&gt;
    &lt;staticLogFileName value=&quot;false&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.XmlLayout&quot;/&gt;
  &lt;/appender&gt;
  &lt;root&gt;
    &lt;level value=&quot;ALL&quot;/&gt;
    &lt;appender-ref ref=&quot;LogFileAppenderXML&quot; /&gt;
  &lt;/root&gt;
&lt;/log4net&gt;    

=====================================================
== File: src/integration-testing/log4net-672/bin/Debug/net6.0/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/integration-testing/log4net-672/log4net.config
=====================================================
&lt;log4net&gt;
  &lt;appender name=&quot;LogFileAppenderXML&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;			
    &lt;file value=&quot;Logs\.xml&quot; /&gt;
    &lt;datePattern value=&quot;yyyy-MM-dd-'Xyz'&quot; /&gt;
    &lt;appendToFile value=&quot;true&quot; /&gt;
    &lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&gt;			
    &lt;rollingStyle value=&quot;Composite&quot; /&gt;
    &lt;maxSizeRollBackups value=&quot;40&quot; /&gt;
    &lt;maximumFileSize value=&quot;1KB&quot; /&gt;
    &lt;preserveLogFileNameExtension value=&quot;true&quot; /&gt;
    &lt;staticLogFileName value=&quot;false&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.XmlLayout&quot;/&gt;
    &lt;fix value=&quot;Partial&quot; /&gt;
  &lt;/appender&gt;
  &lt;appender name=&quot;BufferingForwardingAppender&quot; type=&quot;log4net.APpender.BufferingForwardingAppender&quot;&gt;
    &lt;bufferSize value=&quot;100&quot; /&gt;
    &lt;fix value=&quot;Partial&quot; /&gt;
    &lt;appender-ref ref=&quot;ConsoleAppender&quot;/&gt;
  &lt;/appender&gt;
  &lt;appender name=&quot;ConsoleAppender&quot; type=&quot;log4net.Appender.ConsoleAppender&quot;&gt;
    &lt;target value=&quot;Console.Out&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
      &lt;conversionPattern value=&quot;[console] %message%newline&quot; /&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;
  &lt;root&gt;
    &lt;level value=&quot;ALL&quot;/&gt;
    &lt;appender-ref ref=&quot;LogFileAppenderXML&quot; /&gt;
    &lt;appender-ref ref=&quot;BufferingForwardingAppender&quot; /&gt;
  &lt;/root&gt;
&lt;/log4net&gt;    

=====================================================
== File: src/integration-testing/log4net-672/Program.cs
=====================================================
&#xfeff;using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using log4net;
using log4net.Config;

const int NO_ERROR = 0;
const int MISSING_LOGS = 1;
const int OVERWRITTEN_LOGS = 2;

var appPath = new Uri(Assembly.GetExecutingAssembly().Location).LocalPath;
var appFolder = Path.GetDirectoryName(appPath);
if (appFolder is null)
{
    throw new InvalidOperationException(
        $&quot;Can't determine app folder for {appPath}&quot;
    );
}

var logFolder = Path.Combine(appFolder, &quot;Logs&quot;);
if (Directory.Exists(logFolder))
{
    Directory.Delete(logFolder, recursive: true);
}

var configFile = Path.Combine(appFolder, &quot;log4net.config&quot;);
if (!File.Exists(configFile))
{
    throw new InvalidOperationException($&quot;log4net.config not found at {configFile}&quot;);
}

var logCount = 10;
var identifiers = new List&lt;Guid&gt;();
for (var i = 0; i &lt; 10; i++)
{
    var identifier = Guid.NewGuid();
    identifiers.Add(identifier);
    var logged = LogWith(identifier, logCount);
    if (logged != logCount)
    {
        Die($&quot;Missing logs immediately for '{identifier}' - found {logged}/{logCount}&quot;, MISSING_LOGS);
    }
}

foreach (var identifier in identifiers)
{
    var logged = CountIdentifierInLogs(identifier);
    if (logged != logCount)

=====================================================
== File: src/integration-testing/log4net-672/log4net-672.csproj
=====================================================
&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;

  &lt;PropertyGroup&gt;
    &lt;OutputType&gt;Exe&lt;/OutputType&gt;
    &lt;TargetFramework&gt;net6.0&lt;/TargetFramework&gt;
    &lt;RootNamespace&gt;log4net_672&lt;/RootNamespace&gt;
    &lt;ImplicitUsings&gt;disable&lt;/ImplicitUsings&gt;
    &lt;Nullable&gt;enable&lt;/Nullable&gt;
    &lt;LangVersion&gt;preview&lt;/LangVersion&gt;
    &lt;DefineConstants&gt;NETSTANDARD&lt;/DefineConstants&gt;
  &lt;/PropertyGroup&gt;

  &lt;ItemGroup&gt;
    &lt;ProjectReference Include=&quot;..\..\log4net\log4net.csproj&quot; /&gt;
  &lt;/ItemGroup&gt;

  &lt;ItemGroup&gt;
    &lt;None Update=&quot;log4net.config&quot;&gt;
      &lt;CopyToOutputDirectory&gt;Always&lt;/CopyToOutputDirectory&gt;
    &lt;/None&gt;
  &lt;/ItemGroup&gt;

  &lt;ItemGroup&gt;
    &lt;PackageReference Include=&quot;PeanutButter.EasyArgs&quot; Version=&quot;2.0.63&quot; /&gt;
  &lt;/ItemGroup&gt;

&lt;/Project&gt;

=====================================================
== File: src/integration-testing/log4net-681/log4net.config
=====================================================
&lt;log4net&gt;
  &lt;appender name=&quot;LogFileAppenderXML&quot; type=&quot;log4net.Appender.RollingFileAppender&quot;&gt;
    &lt;file value=&quot;Logs\.xml&quot; /&gt;
    &lt;datePattern value=&quot;yyyy-MM-dd-HH-mm-ss'Xyz'&quot; /&gt;
    &lt;appendToFile value=&quot;true&quot; /&gt;
    &lt;lockingModel type=&quot;log4net.Appender.FileAppender+MinimalLock&quot; /&gt;
    &lt;rollingStyle value=&quot;Composite&quot; /&gt;
    &lt;maxSizeRollBackups value=&quot;40&quot; /&gt;
    &lt;maximumFileSize value=&quot;64&quot; /&gt;
    &lt;preserveLogFileNameExtension value=&quot;true&quot; /&gt;
    &lt;staticLogFileName value=&quot;false&quot; /&gt;
    &lt;layout type=&quot;log4net.Layout.PatternLayout&quot;&gt;
      &lt;conversionPattern value=&quot;[file] %message%newline&quot; /&gt;
    &lt;/layout&gt;
  &lt;/appender&gt;
  &lt;root&gt;
    &lt;level value=&quot;ALL&quot;/&gt;
    &lt;appender-ref ref=&quot;LogFileAppenderXML&quot; /&gt;
  &lt;/root&gt;
&lt;/log4net&gt;    

=====================================================
== File: src/integration-testing/log4net-681/Program.cs
=====================================================
&#xfeff;using System.Reflection;
using log4net;
using log4net.Config;

var appPath = new Uri(Assembly.GetExecutingAssembly().Location).LocalPath;
var appFolder = Path.GetDirectoryName(appPath);

if (appFolder is null)
{
    throw new InvalidOperationException(&quot;Can't find myself&quot;);
}

var configFile = Path.Combine(appFolder, &quot;log4net.config&quot;);
if (!File.Exists(configFile))
{
    throw new InvalidOperationException($&quot;log4net.config not found at {configFile}&quot;);
}

if (Directory.Exists(&quot;Logs&quot;))
{
    Console.WriteLine(&quot;Clearing out old logs...&quot;);
    foreach (var file in Directory.EnumerateFiles(&quot;Logs&quot;))
    {
        File.Delete(file);
    }
}

var info = new FileInfo(configFile);
var logRepo = LogManager.GetRepository(Assembly.GetExecutingAssembly());
XmlConfigurator.ConfigureAndWatch(
    logRepo,
    info
);

var logger = LogManager.GetLogger(typeof(Program));

Console.WriteLine(&quot;logging...&quot;);
var threads = new List&lt;Thread&gt;();
for (var i = 0; i &lt; 128; i++)
{
    var thread = new Thread(LogABit);
    thread.Start();
    threads.Add(thread);
}

foreach (var t in threads)
{
    t.Join();
}


=====================================================
== File: src/integration-testing/log4net-681/log4net-681.csproj
=====================================================
&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;

  &lt;PropertyGroup&gt;
    &lt;OutputType&gt;Exe&lt;/OutputType&gt;
    &lt;TargetFramework&gt;net6.0&lt;/TargetFramework&gt;
    &lt;RootNamespace&gt;log4net_681&lt;/RootNamespace&gt;
    &lt;ImplicitUsings&gt;enable&lt;/ImplicitUsings&gt;
    &lt;Nullable&gt;enable&lt;/Nullable&gt;
  &lt;/PropertyGroup&gt;

  &lt;ItemGroup&gt;
    &lt;ProjectReference Include=&quot;..\..\log4net\log4net.csproj&quot; /&gt;
  &lt;/ItemGroup&gt;

  &lt;ItemGroup&gt;
    &lt;None Update=&quot;log4net.config&quot;&gt;
      &lt;CopyToOutputDirectory&gt;Always&lt;/CopyToOutputDirectory&gt;
    &lt;/None&gt;
  &lt;/ItemGroup&gt;

&lt;/Project&gt;

=====================================================
== File: src/MonoForFramework.targets
=====================================================
&lt;Project&gt;
  &lt;PropertyGroup Condition=&quot;$(TargetFramework.StartsWith('net4')) and '$(OS)' == 'Unix'&quot;&gt;
    &lt;!-- When compiling .NET SDK 2.0 projects targeting .NET 4.x on Mono using 'dotnet build' you --&gt;
    &lt;!-- have to teach MSBuild where the Mono copy of the reference asssemblies is --&gt;
    &lt;!-- Look in the standard install locations --&gt;
    &lt;BaseFrameworkPathOverrideForMono Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' == '' AND EXISTS('/Library/Frameworks/Mono.framework/Versions/Current/lib/mono')&quot;&gt;/Library/Frameworks/Mono.framework/Versions/Current/lib/mono&lt;/BaseFrameworkPathOverrideForMono&gt;
    &lt;BaseFrameworkPathOverrideForMono Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' == '' AND EXISTS('/usr/lib/mono')&quot;&gt;/usr/lib/mono&lt;/BaseFrameworkPathOverrideForMono&gt;
    &lt;BaseFrameworkPathOverrideForMono Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' == '' AND EXISTS('/usr/local/lib/mono')&quot;&gt;/usr/local/lib/mono&lt;/BaseFrameworkPathOverrideForMono&gt;
    &lt;!-- If we found Mono reference assemblies, then use them --&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net20'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/2.0-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net35'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/3.5-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net40'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.0-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net45'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.5-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net451'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.5.1-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net452'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.5.2-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net46'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.6-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net461'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.6.1-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net462'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.6.2-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net47'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.7-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net471'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.7.1-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net472'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.7.2-api&lt;/FrameworkPathOverride&gt;
    &lt;FrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != '' AND '$(TargetFramework)' == 'net48'&quot;&gt;$(BaseFrameworkPathOverrideForMono)/4.8-api&lt;/FrameworkPathOverride&gt;
    &lt;EnableFrameworkPathOverride Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != ''&quot;&gt;true&lt;/EnableFrameworkPathOverride&gt;
    &lt;!-- Add the Facades directory.  Not sure how else to do this. Necessary at least for .NET 4.5 --&gt;
    &lt;AssemblySearchPaths Condition=&quot;'$(BaseFrameworkPathOverrideForMono)' != ''&quot;&gt;$(FrameworkPathOverride)/Facades;$(AssemblySearchPaths)&lt;/AssemblySearchPaths&gt;
  &lt;/PropertyGroup&gt;
&lt;/Project&gt;


=====================================================
== File: src/log4net/Core/FixFlags.cs
=====================================================
&#xfeff;using System;

namespace log4net.Core
{
    /// &lt;summary&gt;
    /// Flags passed to the &lt;see cref=&quot;LoggingEvent.Fix&quot;/&gt; property
    /// &lt;/summary&gt;
    /// &lt;remarks&gt;
    /// &lt;para&gt;
    /// Flags passed to the &lt;see cref=&quot;LoggingEvent.Fix&quot;/&gt; property
    /// &lt;/para&gt;
    /// &lt;/remarks&gt;
    /// &lt;author&gt;Nicko Cadell&lt;/author&gt;
    [Flags]
    public enum FixFlags
    {
        /// &lt;summary&gt;
        /// Fix the MDC
        /// &lt;/summary&gt;
        [Obsolete(&quot;Replaced by composite Properties&quot;)]
        Mdc = 0x01,

        /// &lt;summary&gt;
        /// Fix the NDC
        /// &lt;/summary&gt;
        Ndc = 0x02,

        /// &lt;summary&gt;
        /// Fix the rendered message
        /// &lt;/summary&gt;
        Message = 0x04,

        /// &lt;summary&gt;
        /// Fix the thread name
        /// &lt;/summary&gt;
        ThreadName = 0x08,

        /// &lt;summary&gt;
        /// Fix the callers location information
        /// &lt;/summary&gt;
        /// &lt;remarks&gt;
        /// CAUTION: Very slow to generate
        /// &lt;/remarks&gt;
        LocationInfo = 0x10,

        /// &lt;summary&gt;
        /// Fix the callers windows user name
        /// &lt;/summary&gt;
        /// &lt;remarks&gt;
        /// CAUTION: Slow to generate

=====================================================
== File: src/log4net/log4net.csproj
=====================================================
&#xfeff;&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;
  &lt;PropertyGroup&gt;
    &lt;PackageId&gt;log4net&lt;/PackageId&gt;
    &lt;Version&gt;2.0.15&lt;/Version&gt;
    &lt;Title&gt;Apache log4net&lt;/Title&gt;
    &lt;Product&gt;Apache log4net&lt;/Product&gt;
    &lt;Description&gt;
      log4net is a tool to help the programmer output log statements to a variety of output targets.
      In case of problems with an application, it is helpful to enable logging so that the problem 
      can be located. With log4net it is possible to enable logging at runtime without modifying the
      application binary. The log4net package is designed so that log statements can remain in 
      shipped code without incurring a high performance cost. It follows that the speed of logging
      (or rather not logging) is crucial.

      At the same time, log output can be so voluminous that it quickly becomes overwhelming.
      One of the distinctive features of log4net is the notion of hierarchical loggers.
      Using these loggers it is possible to selectively control which log statements are output
      at arbitrary granularity.

      log4net is designed with two distinct goals in mind: speed and flexibility
    &lt;/Description&gt;
    &lt;Authors&gt;The Apache Software Foundation&lt;/Authors&gt;
    &lt;Owners&gt;Apache Logging Project, Ji&#x159;&#xed; &#x10c;in&#x10d;ura&lt;/Owners&gt;
    &lt;PackageLicenseExpression&gt;Apache-2.0&lt;/PackageLicenseExpression&gt;
    &lt;PackageProjectUrl&gt;https://logging.apache.org/log4net/&lt;/PackageProjectUrl&gt;
    &lt;PackageIcon&gt;package-icon.png&lt;/PackageIcon&gt;
    &lt;Copyright&gt;Copyright 2004-2017 The Apache Software Foundation&lt;/Copyright&gt;
    &lt;PackageTags&gt;logging log tracing logfiles&lt;/PackageTags&gt;
    &lt;RepositoryType&gt;git&lt;/RepositoryType&gt;
    &lt;RepositoryUrl&gt;https://github.com/apache/logging-log4net&lt;/RepositoryUrl&gt;
    &lt;GeneratePackageOnBuild&gt;false&lt;/GeneratePackageOnBuild&gt;
    &lt;Platforms&gt;AnyCPU&lt;/Platforms&gt;
    &lt;TargetFrameworks&gt;net20;net35;net40;net40-client;net45;netstandard1.3;netstandard2.0&lt;/TargetFrameworks&gt;
    &lt;Configurations&gt;Debug;Release&lt;/Configurations&gt;
    &lt;LangVersion&gt;latest&lt;/LangVersion&gt;
    &lt;RootNamespace&gt;log4net&lt;/RootNamespace&gt;
    &lt;AssemblyName&gt;log4net&lt;/AssemblyName&gt;
    &lt;ProjectType&gt;Local&lt;/ProjectType&gt;
    &lt;DefaultClientScript&gt;JScript&lt;/DefaultClientScript&gt;
    &lt;DefaultHTMLPageLayout&gt;Grid&lt;/DefaultHTMLPageLayout&gt;
    &lt;DefaultTargetSchema&gt;IE50&lt;/DefaultTargetSchema&gt;
    &lt;DelaySign&gt;false&lt;/DelaySign&gt;
    &lt;OutputType&gt;Library&lt;/OutputType&gt;
    &lt;OldToolsVersion&gt;3.5&lt;/OldToolsVersion&gt;
    &lt;PublishUrl&gt;publish\&lt;/PublishUrl&gt;
    &lt;Install&gt;true&lt;/Install&gt;
    &lt;InstallFrom&gt;Disk&lt;/InstallFrom&gt;
    &lt;UpdateEnabled&gt;false&lt;/UpdateEnabled&gt;
    &lt;UpdateMode&gt;Foreground&lt;/UpdateMode&gt;
    &lt;UpdateInterval&gt;7&lt;/UpdateInterval&gt;

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log
=====================================================

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log.1
=====================================================
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_default.log
=====================================================

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp3.1/test_41d3d834_4320f4da.log.2
=====================================================
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp1.0/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log
=====================================================
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.3
=====================================================
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.1
=====================================================
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_default.log
=====================================================

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/netcoreapp2.1/test_41d3d834_4320f4da.log.2
=====================================================
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678
012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678

=====================================================
== File: src/log4net.Tests/bin/CrossPlatform/net462/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/Debug/netcoreapp3.1/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/Debug/netcoreapp1.0/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/Debug/netcoreapp2.1/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/bin/Debug/net462/log4net.xml
=====================================================
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;doc&gt;
    &lt;assembly&gt;
        &lt;name&gt;log4net&lt;/name&gt;
    &lt;/assembly&gt;
    &lt;members&gt;
        &lt;member name=&quot;T:log4net.Appender.AdoNetAppender&quot;&gt;
            &lt;summary&gt;
            Appender that logs to a database.
            &lt;/summary&gt;
            &lt;remarks&gt;
            &lt;para&gt;
            &lt;see cref=&quot;T:log4net.Appender.AdoNetAppender&quot;/&gt; appends logging events to a table within a
            database. The appender can be configured to specify the connection 
            string by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionString&quot;/&gt; property. 
            The connection type (provider) can be specified by setting the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.ConnectionType&quot;/&gt;
            property. For more information on database connection strings for
            your specific database see &lt;a href=&quot;http://www.connectionstrings.com/&quot;&gt;http://www.connectionstrings.com/&lt;/a&gt;.
            &lt;/para&gt;
            &lt;para&gt;
            Records are written into the database either using a prepared
            statement or a stored procedure. The &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandType&quot;/&gt; property
            is set to &lt;see cref=&quot;F:System.Data.CommandType.Text&quot;/&gt; (&lt;c&gt;System.Data.CommandType.Text&lt;/c&gt;) to specify a prepared statement
            or to &lt;see cref=&quot;F:System.Data.CommandType.StoredProcedure&quot;/&gt; (&lt;c&gt;System.Data.CommandType.StoredProcedure&lt;/c&gt;) to specify a stored
            procedure.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement text or the name of the stored procedure
            must be set in the &lt;see cref=&quot;P:log4net.Appender.AdoNetAppender.CommandText&quot;/&gt; property.
            &lt;/para&gt;
            &lt;para&gt;
            The prepared statement or stored procedure can take a number
            of parameters. Parameters are added using the &lt;see cref=&quot;M:log4net.Appender.AdoNetAppender.AddParameter(log4net.Appender.AdoNetAppenderParameter)&quot;/&gt;
            method. This adds a single &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; to the
            ordered list of parameters. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt;
            type may be subclassed if required to provide database specific
            functionality. The &lt;see cref=&quot;T:log4net.Appender.AdoNetAppenderParameter&quot;/&gt; specifies
            the parameter name, database type, size, and how the value should
            be generated using a &lt;see cref=&quot;T:log4net.Layout.ILayout&quot;/&gt;.
            &lt;/para&gt;
            &lt;/remarks&gt;
            &lt;example&gt;
            An example of a SQL Server table that could be logged to:
            &lt;code lang=&quot;SQL&quot;&gt;
            CREATE TABLE [dbo].[Log] ( 
              [ID] [int] IDENTITY (1, 1) NOT NULL ,
              [Date] [datetime] NOT NULL ,
              [Thread] [varchar] (255) NOT NULL ,
              [Level] [varchar] (20) NOT NULL ,
              [Logger] [varchar] (255) NOT NULL ,

=====================================================
== File: src/log4net.Tests/NUnitTestRunnerInitializer.cs
=====================================================
&#xfeff;namespace log4net.Tests
{
    using System.IO;

    using NUnit.Framework;

    [SetUpFixture]
    public class NUnitTestRunnerInitializer
    {
        [OneTimeSetUp]
        public void RunBeforeAnyTests()
        {
            Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory);
        }
    }
}

=====================================================
== File: src/log4net.Tests/log4net.Tests.csproj
=====================================================
&#xfeff;&lt;Project Sdk=&quot;Microsoft.NET.Sdk&quot;&gt;
  &lt;PropertyGroup&gt;
    &lt;TargetFrameworks&gt;net462;netcoreapp3.1&lt;/TargetFrameworks&gt;
    &lt;NoWarn&gt;NETSDK1138;CS1701&lt;/NoWarn&gt;
    &lt;ProjectType&gt;Local&lt;/ProjectType&gt;
    &lt;DefaultClientScript&gt;JScript&lt;/DefaultClientScript&gt;
    &lt;DefaultHTMLPageLayout&gt;Grid&lt;/DefaultHTMLPageLayout&gt;
    &lt;DefaultTargetSchema&gt;IE50&lt;/DefaultTargetSchema&gt;
    &lt;DelaySign&gt;false&lt;/DelaySign&gt;
    &lt;OutputType&gt;Library&lt;/OutputType&gt;
    &lt;OldToolsVersion&gt;3.5&lt;/OldToolsVersion&gt;
    &lt;PublishUrl&gt;publish\&lt;/PublishUrl&gt;
    &lt;Install&gt;true&lt;/Install&gt;
    &lt;InstallFrom&gt;Disk&lt;/InstallFrom&gt;
    &lt;UpdateEnabled&gt;false&lt;/UpdateEnabled&gt;
    &lt;UpdateMode&gt;Foreground&lt;/UpdateMode&gt;
    &lt;UpdateInterval&gt;7&lt;/UpdateInterval&gt;
    &lt;UpdateIntervalUnits&gt;Days&lt;/UpdateIntervalUnits&gt;
    &lt;UpdatePeriodically&gt;false&lt;/UpdatePeriodically&gt;
    &lt;UpdateRequired&gt;false&lt;/UpdateRequired&gt;
    &lt;MapFileExtensions&gt;true&lt;/MapFileExtensions&gt;
    &lt;ApplicationRevision&gt;0&lt;/ApplicationRevision&gt;
    &lt;ApplicationVersion&gt;1.0.0.%2a&lt;/ApplicationVersion&gt;
    &lt;IsWebBootstrapper&gt;false&lt;/IsWebBootstrapper&gt;
    &lt;UseApplicationTrust&gt;false&lt;/UseApplicationTrust&gt;
    &lt;BootstrapperEnabled&gt;true&lt;/BootstrapperEnabled&gt;
    &lt;GenerateAssemblyInfo&gt;false&lt;/GenerateAssemblyInfo&gt;
    &lt;AssemblyOriginatorKeyFile&gt;..\..\log4net.snk&lt;/AssemblyOriginatorKeyFile&gt;
    &lt;OutputPath&gt;bin\$(Configuration)&lt;/OutputPath&gt;
    &lt;Configurations&gt;Debug;Release&lt;/Configurations&gt;
    &lt;Platforms&gt;AnyCPU&lt;/Platforms&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup&gt;
    &lt;BaseAddress&gt;285212672&lt;/BaseAddress&gt;
    &lt;FileAlignment&gt;4096&lt;/FileAlignment&gt;
    &lt;RegisterForComInterop&gt;false&lt;/RegisterForComInterop&gt;
    &lt;RemoveIntegerChecks&gt;false&lt;/RemoveIntegerChecks&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=&quot;'$(TargetFramework)'=='net462'&quot;&gt;
    &lt;DefineConstants&gt;$(DefineConstants);NET_2_0;NET_4_0;NET_4_5&lt;/DefineConstants&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=&quot;'$(TargetFramework)'=='netcoreapp1.0'&quot;&gt;
    &lt;DefineConstants&gt;$(DefineConstants);NETSTANDARD;NETSTANDARD1_3&lt;/DefineConstants&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=&quot;'$(TargetFramework)'=='netcoreapp2.1'&quot;&gt;
    &lt;DefineConstants&gt;$(DefineConstants);NETSTANDARD;NETSTANDARD2_0&lt;/DefineConstants&gt;
  &lt;/PropertyGroup&gt;
  &lt;PropertyGroup Condition=&quot;'$(TargetFramework)'=='netcoreapp3.1'&quot;&gt;
    &lt;DefineConstants&gt;$(DefineConstants);NETSTANDARD;NETSTANDARD2_0&lt;/DefineConstants&gt;
  &lt;/PropertyGroup&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/projectSettingsUpdater.xml
=====================================================
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project version=&quot;4&quot;&gt;
  &lt;component name=&quot;RiderProjectSettingsUpdater&quot;&gt;
    &lt;option name=&quot;vcsConfiguration&quot; value=&quot;2&quot; /&gt;
  &lt;/component&gt;
&lt;/project&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/codeStyles/codeStyleConfig.xml
=====================================================
&lt;component name=&quot;ProjectCodeStyleConfiguration&quot;&gt;
  &lt;state&gt;
    &lt;option name=&quot;PREFERRED_PROJECT_CODE_STYLE&quot; value=&quot;Default&quot; /&gt;
  &lt;/state&gt;
&lt;/component&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/vcs.xml
=====================================================
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project version=&quot;4&quot;&gt;
  &lt;component name=&quot;VcsDirectoryMappings&quot;&gt;
    &lt;mapping directory=&quot;$PROJECT_DIR$/..&quot; vcs=&quot;Git&quot; /&gt;
  &lt;/component&gt;
&lt;/project&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/workspace.xml
=====================================================
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project version=&quot;4&quot;&gt;
  &lt;component name=&quot;AutoGeneratedRunConfigurationManager&quot;&gt;
    &lt;projectFile&gt;log4net.Tests/log4net.Tests.csproj&lt;/projectFile&gt;
    &lt;projectFile&gt;integration-testing/log4net-672/log4net-672.csproj&lt;/projectFile&gt;
  &lt;/component&gt;
  &lt;component name=&quot;BranchesTreeState&quot;&gt;
    &lt;expand&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;LOCAL_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:origin&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:origin&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:abandoned&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:origin&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:feature&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:origin&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:pr&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:origin&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:pr&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:old&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
      &lt;/path&gt;
      &lt;path&gt;
        &lt;item name=&quot;ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;REMOTE_ROOT&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;
        &lt;item name=&quot;GROUP_NODE:origin&quot; type=&quot;e8cecc67:BranchNodeDescriptor&quot; /&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/indexLayout.xml
=====================================================
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project version=&quot;4&quot;&gt;
  &lt;component name=&quot;UserContentModel&quot;&gt;
    &lt;attachedFolders /&gt;
    &lt;explicitIncludes /&gt;
    &lt;explicitExcludes /&gt;
  &lt;/component&gt;
&lt;/project&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/misc.xml
=====================================================
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project version=&quot;4&quot;&gt;
  &lt;component name=&quot;JavaScriptSettings&quot;&gt;
    &lt;option name=&quot;languageLevel&quot; value=&quot;ES6&quot; /&gt;
  &lt;/component&gt;
&lt;/project&gt;

=====================================================
== File: src/.idea/.idea.log4net/.idea/.name
=====================================================
log4net

=====================================================
== File: README.md
=====================================================
Introduction
===========

Apache log4net is a sub project of the Apache Logging Services project. 
Apache log4net graduated from the Apache Incubator in February 2007.
Web site: http://logging.apache.org/log4net


Documentation
=============

For the latest documentation see the log4net web site at:
http://logging.apache.org/log4net

Contributing
============

log4net development happens on the logging dev mailing list, see
https://logging.apache.org/log4net/mail-lists.html.  Please join the
mailing list and discuss bigger changes before working on them.

For bigger changes we must ask you to sign a Contributor License
Agreement http://www.apache.org/licenses/#clas.

Github pull requests are one way to contribute, The Apache issue
tracker is no longer accepting new issues but is available at 
https://issues.apache.org/jira/browse/LOG4NET for access to 
previous issues. 

Developing
==========

log4net targets a wide array of .net platforms, including some
which are out of support from Microsoft, making it difficult to
install relevant SDKs and build for those targets. In particular,
older Client Profile .NET Framework targets and dotnet core 1.1
may be installed by using the bundled helper scripts:

- [install-net-framework-sdk-3.5.ps1](install-net-framework-sdk-3.5.ps1)
- [install-dotnet-core-sdk-1.1.ps1](install-dotnet-core-sdk-1.1.ps1)

These scripts download the relevant installers from Microsoft servers,
but you run them at your own risk.

Please see 
- [CONTRIBUTING.md](doc/CONTRIBUTING.md)
- [BUILDING.md](doc/BUILDING.md)
- [RELEASING.md](doc/RELEASING.md)
</pre></div></div>
					</td>
				</tr>
			</table>
		</div>

		<div class="footer">
							<p>Copyright &copy; 2004-2022 <a class="external" href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
				<p>Apache log4net, Apache, log4net, the Apache feather logo, the Apache Logging Services project logo and the Built by Maven logo are trademarks of The Apache Software Foundation.</p>
				<p>Site powered by <a class="external" href="http://getbootstrap.com/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
			</div>
		</div>
	</body>
</html>
