Merge pull request #116 from apache/Feature/v2.0.16
Release notes for 2.0.16
diff --git a/.gitignore b/.gitignore
index ad029ec..32ccf02 100644
--- a/.gitignore
+++ b/.gitignore
@@ -244,3 +244,5 @@
dotnetfx35.exe
*.exe
/src/Binaries/*
+
+local-tasks/*.generated.js
\ No newline at end of file
diff --git a/.zarro-defaults b/.zarro-defaults
index 43b612c..b7bbc30 100644
--- a/.zarro-defaults
+++ b/.zarro-defaults
@@ -15,3 +15,14 @@
# specify what to build (prevents accidental build of any other sln)
BUILD_INCLUDE=src/log4net.sln
+
+# using zarro's pack target, tell it what to pack
+PACK_INCLUDE_CSPROJ=log4net.csproj
+# the pack target increments the PackageVersion node in log4net.csproj
+# - setting this "truthy" propagates that change to the Version node
+PACK_SYNC_PROJECT_VERSION=1
+# all version changes should be manual, however, it's generally
+# accepted that the beta for, eg, 1.2.3 is 1.2.3-{date}-{sha}
+# ie beta packages carry the main version of their intended
+# release version
+PACK_INCREMENT_MINOR_ON_FIRST_RELEASE=0
diff --git a/local-tasks/build-site.js b/local-tasks/build-site.js
index d63d91c..ec35242 100644
--- a/local-tasks/build-site.js
+++ b/local-tasks/build-site.js
@@ -5,9 +5,9 @@
// 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
@@ -16,32 +16,33 @@
// under the License.
const
- gulp = requireModule("gulp"),
- spawn = requireModule("spawn"),
- env = requireModule("env"),
- os = require("os"),
- which = require("which");
+ gulp = requireModule("gulp"),
+ spawn = requireModule("spawn"),
+ env = requireModule("env"),
+ os = require("os"),
+ which = require("which");
gulp.task("build-site", async () => {
- let maven;
- try {
- maven = await which("mvn");
- } catch (e) {
- let extra;
- switch (os.platform()) {
- case "win32":
- extra = "You may install maven via chocolatey (https://chocolatey.org)";
- break;
- case "darwin":
- extra = "You may install maven via homebrew";
- break;
- default:
- extra = "You should install maven with your package manager";
- break;
- }
- throw new Error(`Unable to find mvn in your path. ${extra}`);
+ const { rm } = require("yafs");
+ let maven;
+ try {
+ maven = await which("mvn");
+ } catch (e) {
+ let extra;
+ switch (os.platform()) {
+ case "win32":
+ extra = "You may install maven via chocolatey (https://chocolatey.org)";
+ break;
+ case "darwin":
+ extra = "You may install maven via homebrew";
+ break;
+ default:
+ extra = "You should install maven with your package manager";
+ break;
}
-
- return spawn("mvn", [ "site" ]);
+ throw new Error(`Unable to find mvn in your path. ${ extra }`);
+ }
+ await rm("target");
+ return spawn("mvn", [ "site" ]);
});
diff --git a/local-tasks/update-version-info.js b/local-tasks/update-version-info.ts
similarity index 81%
rename from local-tasks/update-version-info.js
rename to local-tasks/update-version-info.ts
index c1e0353..8c48510 100644
--- a/local-tasks/update-version-info.js
+++ b/local-tasks/update-version-info.ts
@@ -1,3 +1,4 @@
+/// <reference path="../node_modules/zarro/types.d.ts" />
// 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
@@ -5,9 +6,9 @@
// 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
@@ -16,22 +17,22 @@
// under the License.
const
- gulp = requireModule("gulp");
+ gulp = requireModule<Gulp>("gulp");
gulp.task("update-version-info", async () => {
// 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("simple-git/promise"),
- readTextFile = requireModule("read-text-file"),
- writeTextFile = requireModule("write-text-file"),
- readCsProjVersion = requireModule("read-csproj-version"),
- currentVersion = await readCsProjVersion("src/log4net/log4net.csproj"),
+ Git = require("simple-git"),
+ { readTextFile, writeTextFile } = require("yafs"),
+ { readProjectVersion } = requireModule<CsProjUtils>("csproj-utils"),
+ currentVersion = await readProjectVersion("src/log4net/log4net.csproj"),
assemblyInfo = "src/log4net/AssemblyInfo.cs",
assemblyVersionInfo = "src/log4net/AssemblyVersionInfo.cs",
versionString = sanitiseVersion(currentVersion);
+
await updateVersionsIn(assemblyInfo, versionString);
await updateVersionsIn(assemblyVersionInfo, versionString);
@@ -43,9 +44,9 @@
await git.commit(`:bookmark: update versioning to ${versionString}`);
async function updateVersionsIn(
- filePath,
- newVersion
- ) {
+ filePath: string,
+ newVersion: string
+ ): Promise<void> {
const
contents = await readTextFile(filePath),
updated = contents
@@ -56,7 +57,7 @@
await writeTextFile(filePath, updated);
}
- function sanitiseVersion(version) {
+ function sanitiseVersion(version: string): string {
const parts = version.split(".");
while (parts.length < 4) {
parts.push("0");
diff --git a/log4net.build b/log4net.build
index 0bb50af..7172d4f 100644
--- a/log4net.build
+++ b/log4net.build
@@ -20,7 +20,7 @@
<property name="log4net.basedir" value="." />
<property name="project.build.config" value="debug" />
<property name="project.build.package" value="false" />
- <property name="package.version" value="2.0.15"/>
+ <property name="package.version" value="2.0.16"/>
<!-- Include log4net helpers -->
<include buildfile="${log4net.basedir}/log4net.include" />
diff --git a/log4net.shfbproj b/log4net.shfbproj
index d8e22eb..ae39e03 100644
--- a/log4net.shfbproj
+++ b/log4net.shfbproj
@@ -33,7 +33,7 @@
<!-- SHFB properties -->
<FrameworkVersion>.NET Framework 3.5</FrameworkVersion>
<OutputPath>doc\sdk\net\4.0\</OutputPath>
- <HtmlHelpName>log4net-sdk-2.0.15</HtmlHelpName>
+ <HtmlHelpName>log4net-sdk-2.0.16</HtmlHelpName>
<Language>en-US</Language>
<SyntaxFilters>Standard</SyntaxFilters>
<SdkLinkTarget>Blank</SdkLinkTarget>
diff --git a/package-lock.json b/package-lock.json
index 1044a25..760e126 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,10 +15,11 @@
"gulp-zip": "^5.0.2",
"npm-run-all": "^4.1.5",
"rimraf": "^3.0.2",
- "simple-git": "^3.16.0",
+ "simple-git": "^3.22.0",
+ "typescript": "^5.3.3",
"which": "^2.0.2",
- "yafs": "^1.5.0",
- "zarro": "^1.169.0"
+ "yafs": "^1.36.0",
+ "zarro": "^1.170.0"
}
},
"node_modules/@kwsites/file-exists": {
@@ -6597,9 +6598,9 @@
}
},
"node_modules/simple-git": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.16.0.tgz",
- "integrity": "sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw==",
+ "version": "3.22.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.22.0.tgz",
+ "integrity": "sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==",
"dev": true,
"dependencies": {
"@kwsites/file-exists": "^1.1.1",
@@ -7386,6 +7387,19 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/unbox-primitive": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
@@ -7912,9 +7926,9 @@
}
},
"node_modules/zarro": {
- "version": "1.169.0",
- "resolved": "https://registry.npmjs.org/zarro/-/zarro-1.169.0.tgz",
- "integrity": "sha512-2k89dREJ3XKVefgB7PoXZAjnrRZ8f9RwLLuo3SnXabb9PZb3P1fVCC5S3wjGNsD/LoG7CtI27AUOp3uWg+buhQ==",
+ "version": "1.170.0",
+ "resolved": "https://registry.npmjs.org/zarro/-/zarro-1.170.0.tgz",
+ "integrity": "sha512-cekgxDOEYWACTebzRtjTTv0R0aC7FJokoljciPqnKU+BOh9dvWar3K2ziR3xRXv8BZkhl63Rk9jfuR4elIasdg==",
"dev": true,
"dependencies": {
"@octokit/rest": "^20.0.1",
@@ -13255,9 +13269,9 @@
}
},
"simple-git": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.16.0.tgz",
- "integrity": "sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw==",
+ "version": "3.22.0",
+ "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.22.0.tgz",
+ "integrity": "sha512-6JujwSs0ac82jkGjMHiCnTifvf1crOiY/+tfs/Pqih6iow7VrpNKRRNdWm6RtaXpvvv/JGNYhlUtLhGFqHF+Yw==",
"dev": true,
"requires": {
"@kwsites/file-exists": "^1.1.1",
@@ -13907,6 +13921,12 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "dev": true
+ },
"unbox-primitive": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz",
@@ -14353,9 +14373,9 @@
}
},
"zarro": {
- "version": "1.169.0",
- "resolved": "https://registry.npmjs.org/zarro/-/zarro-1.169.0.tgz",
- "integrity": "sha512-2k89dREJ3XKVefgB7PoXZAjnrRZ8f9RwLLuo3SnXabb9PZb3P1fVCC5S3wjGNsD/LoG7CtI27AUOp3uWg+buhQ==",
+ "version": "1.170.0",
+ "resolved": "https://registry.npmjs.org/zarro/-/zarro-1.170.0.tgz",
+ "integrity": "sha512-cekgxDOEYWACTebzRtjTTv0R0aC7FJokoljciPqnKU+BOh9dvWar3K2ziR3xRXv8BZkhl63Rk9jfuR4elIasdg==",
"dev": true,
"requires": {
"@octokit/rest": "^20.0.1",
diff --git a/package.json b/package.json
index 5f06077..640be92 100644
--- a/package.json
+++ b/package.json
@@ -16,8 +16,10 @@
"prepare-build-artifacts": "zarro @",
"dump-env": "node -e \"console.log(process.env);\"",
"release": "run-s update-version-info build-release prepare-build-artifacts build-site",
+ "release-beta": "cross-env DOTNET_CORE=1 VERSION_INCREMENT_STRATEGY=prerelease BUILD_CONFIGURATION=Release zarro release-nuget",
"zarro": "zarro",
- "update-version-info": "zarro @"
+ "update-version-info": "zarro @",
+ "this-is-an-example": "zarro @"
},
"repository": {
"type": "git",
@@ -36,9 +38,10 @@
"gulp-zip": "^5.0.2",
"npm-run-all": "^4.1.5",
"rimraf": "^3.0.2",
- "simple-git": "^3.16.0",
+ "simple-git": "^3.22.0",
+ "typescript": "^5.3.3",
"which": "^2.0.2",
- "yafs": "^1.5.0",
- "zarro": "^1.169.0"
+ "yafs": "^1.36.0",
+ "zarro": "^1.170.0"
}
}
diff --git a/pom.xml b/pom.xml
index f1787c1..96d4cdc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,5 @@
<!--
+}
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.
@@ -20,7 +21,7 @@
<groupId>log4net</groupId>
<artifactId>apache-log4net</artifactId>
<packaging>pom</packaging>
- <version>2.0.15</version>
+ <version>2.0.16</version>
<name>Apache log4net</name>
<description>Logging framework for Microsoft .NET Framework.</description>
<url>http://logging.apache.org/log4net/</url>
diff --git a/src/log4net.Tests/log4net.Tests.csproj b/src/log4net.Tests/log4net.Tests.csproj
index a6a0797..414b2a2 100644
--- a/src/log4net.Tests/log4net.Tests.csproj
+++ b/src/log4net.Tests/log4net.Tests.csproj
@@ -8,7 +8,6 @@
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Library</OutputType>
- <OldToolsVersion>3.5</OldToolsVersion>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@@ -29,6 +28,7 @@
<OutputPath>bin\$(Configuration)</OutputPath>
<Configurations>Debug;Release</Configurations>
<Platforms>AnyCPU</Platforms>
+ <Deterministic>true</Deterministic>
<!-- suppress analyzer mismatch warning -->
<NoWarn>CS8032</NoWarn>
</PropertyGroup>
diff --git a/src/log4net.sln b/src/log4net.sln
index ad2070a..7e7716a 100644
--- a/src/log4net.sln
+++ b/src/log4net.sln
@@ -36,6 +36,15 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "log4net-681", "integration-testing\log4net-681\log4net-681.csproj", "{A4F9E417-2250-4075-9118-B4FF1C58B6C5}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".config", ".config", "{78CDAF4E-3F9F-4D00-A494-FFAE30E7EF0E}"
+ ProjectSection(SolutionItems) = preProject
+ ..\.asf.yaml = ..\.asf.yaml
+ ..\.gitignore = ..\.gitignore
+ ..\.zarro-defaults = ..\.zarro-defaults
+ ..\package.json = ..\package.json
+ ..\pom.xml = ..\pom.xml
+ EndProjectSection
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
diff --git a/src/log4net/AssemblyInfo.cs b/src/log4net/AssemblyInfo.cs
index a767ff7..2cae3b9 100644
--- a/src/log4net/AssemblyInfo.cs
+++ b/src/log4net/AssemblyInfo.cs
@@ -55,77 +55,77 @@
//
#if (CLI_1_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.CLI 1.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.CLI 1.0")]
[assembly: AssemblyTitle("Apache log4net for CLI 1.0 Compatible Frameworks")]
#elif (NET_1_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 1.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 1.0")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 1.0")]
#elif (NET_1_1)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 1.1")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 1.1")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 1.1")]
#elif (NET_4_5)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 4.5")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 4.5")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 4.5")]
#elif (NET_4_0)
#if CLIENT_PROFILE
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 4.0 CP")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 4.0 CP")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 4.0 Client Profile")]
#else
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 4.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 4.0")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 4.0")]
#endif // Client Profile
#elif (NET_3_5)
#if CLIENT_PROFILE
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 3.5 CP")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 3.5 CP")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 3.5 Client Profile")]
#else
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 3.5")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 3.5")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 3.5")]
#endif // Client Profile
#elif (NET_2_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET 2.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET 2.0")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework 2.0")]
#elif (NETCF_1_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NETCF 1.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NETCF 1.0")]
[assembly: AssemblyTitle("Apache log4net for .NET Compact Framework 1.0")]
#elif (NETCF_2_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NETCF 2.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NETCF 2.0")]
[assembly: AssemblyTitle("Apache log4net for .NET Compact Framework 2.0")]
#elif (MONO_1_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-Mono 1.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-Mono 1.0")]
[assembly: AssemblyTitle("Apache log4net for Mono 1.0")]
#elif (MONO_2_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-Mono 2.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-Mono 2.0")]
[assembly: AssemblyTitle("Apache log4net for Mono 2.0")]
#elif (MONO_3_5)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-Mono 3.5")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-Mono 3.5")]
[assembly: AssemblyTitle("Apache log4net for Mono 3.5")]
#elif (MONO_4_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-Mono 4.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-Mono 4.0")]
[assembly: AssemblyTitle("Apache log4net for Mono 4.0")]
#elif (SSCLI_1_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-SSCLI 1.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-SSCLI 1.0")]
[assembly: AssemblyTitle("Apache log4net for Shared Source CLI 1.0")]
#elif (NET)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET")]
[assembly: AssemblyTitle("Apache log4net for .NET Framework")]
#elif (NETSTANDARD1_3)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET Standard 1.3")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET Standard 1.3")]
[assembly: AssemblyTitle("Apache log4net for .NET Standard 1.3")]
#elif (NETSTANDARD2_0)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NET Standard 2.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NET Standard 2.0")]
[assembly: AssemblyTitle("Apache log4net for .NET Standard 2.0")]
#elif (NETCF)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-.NETCF")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-.NETCF")]
[assembly: AssemblyTitle("Apache log4net for .NET Compact Framework")]
#elif (MONO)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-Mono")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-Mono")]
[assembly: AssemblyTitle("Apache log4net for Mono")]
#elif (SSCLI)
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0-SSCLI")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0-SSCLI")]
[assembly: AssemblyTitle("Apache log4net for Shared Source CLI")]
#else
-[assembly: AssemblyInformationalVersionAttribute("2.0.15.0")]
+[assembly: AssemblyInformationalVersionAttribute("2.0.16.0")]
[assembly: AssemblyTitle("Apache log4net")]
#endif
diff --git a/src/log4net/AssemblyVersionInfo.cs b/src/log4net/AssemblyVersionInfo.cs
index 1c27d57..14524de 100644
--- a/src/log4net/AssemblyVersionInfo.cs
+++ b/src/log4net/AssemblyVersionInfo.cs
@@ -28,11 +28,11 @@
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: System.Reflection.AssemblyVersion("2.0.15.0")]
+[assembly: System.Reflection.AssemblyVersion("2.0.16.0")]
#if !NETCF
#if !SSCLI
-[assembly: System.Reflection.AssemblyFileVersion("2.0.15.0")]
+[assembly: System.Reflection.AssemblyFileVersion("2.0.16.0")]
#endif
#endif
diff --git a/src/log4net/log4net.csproj b/src/log4net/log4net.csproj
index 2c9e4a4..61dfe5a 100644
--- a/src/log4net/log4net.csproj
+++ b/src/log4net/log4net.csproj
@@ -1,7 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<PackageId>log4net</PackageId>
- <Version>2.0.15</Version>
+ <Version>2.0.16</Version>
+ <PackageVersion>2.0.16</PackageVersion>
<Title>Apache log4net</Title>
<Product>Apache log4net</Product>
<Description>
@@ -24,7 +25,7 @@
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
<PackageProjectUrl>https://logging.apache.org/log4net/</PackageProjectUrl>
<PackageIcon>package-icon.png</PackageIcon>
- <Copyright>Copyright 2004-2017 The Apache Software Foundation</Copyright>
+ <Copyright>Copyright 2004-2024 The Apache Software Foundation</Copyright>
<PackageTags>logging log tracing logfiles</PackageTags>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>https://github.com/apache/logging-log4net</RepositoryUrl>
@@ -41,7 +42,6 @@
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>Library</OutputType>
- <OldToolsVersion>3.5</OldToolsVersion>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@@ -71,6 +71,7 @@
<FileAlignment>4096</FileAlignment>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
+ <Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='net40-client'">
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
diff --git a/src/site/xdoc/download_log4net.xml b/src/site/xdoc/download_log4net.xml
index 1ae3e4e..0a34309 100644
--- a/src/site/xdoc/download_log4net.xml
+++ b/src/site/xdoc/download_log4net.xml
@@ -36,14 +36,14 @@
</section>
- <section name="log4net 2.0.15">
+ <section name="log4net 2.0.16">
<subsection name="Source">
<table>
<tr>
- <td><a href="https://downloads.apache.org/logging/log4net/source/apache-log4net-source-2.0.15.zip">apache-log4net-source-2.0.15.zip</a></td>
- <td><a href="https://downloads.apache.org/logging/log4net/source/apache-log4net-source-2.0.15.zip.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/logging/log4net/source/apache-log4net-source-2.0.15.zip.asc">pgp</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/source/apache-log4net-source-2.0.16.zip">apache-log4net-source-2.0.16.zip</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/source/apache-log4net-source-2.0.16.zip.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/source/apache-log4net-source-2.0.16.zip.asc">pgp</a></td>
</tr>
</table>
</subsection>
@@ -52,14 +52,14 @@
<p>Binaries are available in a zip file or nupkg, which is also available from <a href="https://www.nuget.org/packages/log4net/">nuget.org</a></p>
<table>
<tr>
- <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net-binaries-2.0.15.zip">log4net-binaries-2.0.15.zip</a></td>
- <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net-binaries-2.0.15.zip.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net-binaries-2.0.15.zip.asc">pgp</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net-binaries-2.0.16.zip">log4net-binaries-2.0.16.zip</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net-binaries-2.0.16.zip.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net-binaries-2.0.16.zip.asc">pgp</a></td>
</tr>
<tr>
- <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net.2.0.15.nupkg">log4net-2.0.15.nupkg</a></td>
- <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net.2.0.15.nupkg.sha512">sha512</a></td>
- <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net.2.0.15.nupkg.asc">pgp</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net.2.0.16.nupkg">log4net-2.0.16.nupkg</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net.2.0.16.nupkg.sha512">sha512</a></td>
+ <td><a href="https://downloads.apache.org/logging/log4net/binaries/apache-log4net.2.0.16.nupkg.asc">pgp</a></td>
</tr>
</table>
</subsection>
diff --git a/src/site/xdoc/release/release-notes.xml b/src/site/xdoc/release/release-notes.xml
index 08018c7..928b200 100644
--- a/src/site/xdoc/release/release-notes.xml
+++ b/src/site/xdoc/release/release-notes.xml
@@ -17,1940 +17,2222 @@
-->
<document>
- <properties>
- <author email="nicko at apache dot org">Nicko Cadell</author>
- <title>Apache log4net: Release Notes</title>
- </properties>
+ <properties>
+ <author email="nicko at apache dot org">Nicko Cadell</author>
+ <title>Apache log4net: Release Notes</title>
+ </properties>
- <meta name="keywords" content="log4net release notes, log4net"/>
+ <meta name="keywords" content="log4net release notes, log4net"/>
- <body>
+ <body>
- <section id="main" name="Apache log4net™ Release Notes">
- <section id="2.0.15" name="2.0.15">
- Attention: .NET 3.5 Client Profile is <i>no longer supported</i>. I'm really sorry, I've tried
- to keep as many of the legacy targets available as possible, but after spending another 4 or so
- hours trying to get net35-client to build on any machine, I've given up - as far as I'm aware,
- this should only affect Windows XP clients. I'm afraid 2.0.14 was the end of the road for you.
+ <section id="main" name="Apache log4net™ Release Notes">
+ <section id="2.0.16" name="2.0.16">
+ Apache log4net 2.0.16 addresses reported issues:
+ <section id="2.0.16-bug" name="Bug fixes">
+ <ul>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/103">Support converting '.NET TP Worker' to the numeric thread ID on .NET 8+ (by @erikmav)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/94">Fix typo in RemotingServer App.Config (by @craigdfrench)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/105">Fix CodeQL Password in configuration file Rule False Positives (by @justinmichaels)</a>
+ </li>
+ </ul>
+ </section>
+ <section id="2.0.16-enhancements" name="Enhancements">
+ <ul>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/89">adding extension points for revising logged content (by @freeandnil)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/91">SystemInfo.EntryAssemblyLocation writable to adjust location for config-files in unit test projects (by @freeandnil)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/92">New locking model for single log file in native applications with managed parts (by @freeandnil)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/93">Extension point for handling new lines in RemoteSysLogAppender added (by @freeandnil)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/94">Defer creation of locking model to ActivateOptions() (by @freeandnil)</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/101">Add Peek() method to ThreadContextStack and LogicalThreadContextStack (by @andreycha)</a>
+ </li>
+ </ul>
+ </section>
+ </section>
+ <section id="2.0.15" name="2.0.15">
+ Attention: .NET 3.5 Client Profile is <i>no longer supported</i>. I'm really sorry, I've tried
+ to keep as many of the legacy targets available as possible, but after spending another 4 or so
+ hours trying to get net35-client to build on any machine, I've given up - as far as I'm aware,
+ this should only affect Windows XP clients. I'm afraid 2.0.14 was the end of the road for you.
- Apache log4net 2.0.15 addresses reported issues:
- <section id="2.0.15-bug" name="Bug fixes">
- <ul>
- <li>Improper usage of xml namespacing for netfx targets after a netstandard update (
- <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-685">LOG4NET-685</a>,
- related <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-683">LOG4NET-683</a>)</li>
- <li>Locking hashtables during write in RenderMap calls to make them thread-safe (
- <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-646">LOG4NET-646</a>)</li>
- <li>An issue where RollingFilAppender would sometimes overwrite files instead of rolling them (
- <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-672">LOG4NET-672</a>)</li>
- </ul>
- </section>
- <section id="2.0.15-enhancements" name="Enhancements">
- <ul>
- <li><a href="https://github.com/apache/logging-log4net/pull/81">Enforce TLS1.2 in the ps1 scripts provided for dev use</a></li>
- <li><a href="https://github.com/apache/logging-log4net/pull/80">Corrected links in README</a></li>
- <li><a href="https://github.com/apache/logging-log4net/pull/89">Open up the internals of LogEvent a bit for extension purposes</a></li>
- <li>Add information about FixFlags and performance to the BufferingAppender (and derivative) documentation</li>
- </ul>
- </section>
- </section>
- <section id="2.0.14" name="2.0.14">
- Apache log4net 2.0.14 is a minor release to address some reported issues
- and accept a pull request provided by a community member:
- <section id="2.0.14-bug" name="Bug fixes">
- <ul>
- <li><a href="https://github.com/apache/logging-log4net/pull/77">Pull request</a> by @NicholasNoise to address issues with logging via ado appender to PostgreSQL</li>
- <li>Community request to correctly handle null data in ReadOnlyPropertiesDictionary</li>
- <li><a href="https://github.com/apache/logging-log4net/pull/78">Pull request</a> by @erikma to use the numeric thread id for .net worker pool threads
- (<a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-680">LOG4NET-680</a>)</li>
- <li><a href="https://github.com/apache/logging-log4net/pull/79">Pull request</a> by @erikma to dispose of WindowsIdentity retrieved in TryGetCurrentUserName()
- (<a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-671">LOG4NET-671</a>)</li>
- </ul>
- </section>
- </section>
- <section id="2.0.13" name="2.0.13">
- Apache log4net 2.0.13 is a minor release to address some reported issues
- and accept some pull requests provided by community members:
- <section id="2.0.13-bug" name="Bug fixes">
- <ul>
- <li>Addresses issue [<a href="https://issues.apache.org/jira/browse/LOG4NET-583">LOG4NET-583</a>] with proposed solution by Emmo Emminghaus,
- namely to provide an unique mutex identifier for the file rolling logic.</li>
- <li>Accepts pull request <a href="https://github.com/apache/logging-log4net/pull/76">76</a> by @dschwartzni
- to allow the netstandard2.0 library to be used within net472 web services</li>
- <li>Accepts pull request <a href=" https://github.com/apache/logging-log4net/pull/18">18</a> by @dmarlow
- to update the xml layout mimicking log4j</li>
- </ul>
- </section>
- </section>
- <section id="2.0.12" name="2.0.12">
- <p>
- Apache log4net 2.0.12 is a minor fix release to address reported issues on
- non-windows platforms.
- </p>
- <section id="2.0.12-bug" name="Bug Fixes">
- <ul>
- <li>Addresses the issues reported in
- [<a href="https://issues.apache.org/jira/browse/LOG4NET-652">LOG4NET-652</a>]
- and [<a href="https://issues.apache.org/jira/browse/LOG4NET-652">LOG4NET-653</a>] whereby
- logging could throw a PlatformNotSupported exception when the username
- is required within logs on non-Windows platforms. The implemented
- behavior is to fall back, where possible, on Environment.UserName
- or provide text that the facility is not supported.
- </li>
- </ul>
- </section>
- </section>
- <section id="2.0.11" name="2.0.11">
- Apache log4net 2.0.11 fixes incorrect version strings within the released
- binaries and contains some minor fixes to correctly dispose of StreamWriters
- used during log flushing, thanks to community member @NicholasNoise
- </section>
- <section id="2.0.10" name="2.0.10">
- <p>
- Apache log4net 2.0.10 improves <code>netstandard2.0</code> support
- thanks to community member @NicholasNoise.
- </p>
- <section id="2.0.10-bug" name="Bug Fixes">
- <ul>
- <li>
- [<a href="https://issues.apache.org/jira/browse/LOG4NET-575">LOG4NET-575</a>]
- Addresses CVE-2018-1285 by cherry-picking the fix from
- Dominik Psenner, reported by Karthik Balasundaram, as it already
- existed in the the develop branch
- </li>
- </ul>
- </section>
- </section>
+ Apache log4net 2.0.15 addresses reported issues:
+ <section id="2.0.15-bug" name="Bug fixes">
+ <ul>
+ <li>
+ Improper usage of xml namespacing for netfx targets after a netstandard update (
+ <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-685">LOG4NET-685</a>,
+ related <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-683">LOG4NET-683</a>)
+ </li>
+ <li>
+ Locking hashtables during write in RenderMap calls to make them thread-safe (
+ <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-646">LOG4NET-646</a>)
+ </li>
+ <li>
+ An issue where RollingFilAppender would sometimes overwrite files instead of rolling them (
+ <a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-672">LOG4NET-672</a>)
+ </li>
+ </ul>
+ </section>
+ <section id="2.0.15-enhancements" name="Enhancements">
+ <ul>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/81">Enforce TLS1.2 in the ps1 scripts provided for dev use</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/80">Corrected links in README</a>
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/89">Open up the internals of LogEvent a bit for extension purposes</a>
+ </li>
+ <li>Add information about FixFlags and performance to the BufferingAppender (and derivative) documentation</li>
+ </ul>
+ </section>
+ </section>
+ <section id="2.0.14" name="2.0.14">
+ Apache log4net 2.0.14 is a minor release to address some reported issues
+ and accept a pull request provided by a community member:
+ <section id="2.0.14-bug" name="Bug fixes">
+ <ul>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/77">Pull request</a> by @NicholasNoise to address issues with logging via ado appender to PostgreSQL
+ </li>
+ <li>Community request to correctly handle null data in ReadOnlyPropertiesDictionary</li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/78">Pull request</a> by @erikma to use the numeric thread id for .net worker pool threads
+ (<a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-680">LOG4NET-680</a>)
+ </li>
+ <li>
+ <a href="https://github.com/apache/logging-log4net/pull/79">Pull request</a> by @erikma to dispose of WindowsIdentity retrieved in TryGetCurrentUserName()
+ (<a href="https://issues.apache.org/jira/projects/LOG4NET/issues/LOG4NET-671">LOG4NET-671</a>)
+ </li>
+ </ul>
+ </section>
+ </section>
+ <section id="2.0.13" name="2.0.13">
+ Apache log4net 2.0.13 is a minor release to address some reported issues
+ and accept some pull requests provided by community members:
+ <section id="2.0.13-bug" name="Bug fixes">
+ <ul>
+ <li>
+ Addresses issue [<a href="https://issues.apache.org/jira/browse/LOG4NET-583">LOG4NET-583</a>] with proposed solution by Emmo Emminghaus,
+ namely to provide an unique mutex identifier for the file rolling logic.
+ </li>
+ <li>
+ Accepts pull request <a href="https://github.com/apache/logging-log4net/pull/76">76</a> by @dschwartzni
+ to allow the netstandard2.0 library to be used within net472 web services
+ </li>
+ <li>
+ Accepts pull request <a href=" https://github.com/apache/logging-log4net/pull/18">18</a> by @dmarlow
+ to update the xml layout mimicking log4j
+ </li>
+ </ul>
+ </section>
+ </section>
+ <section id="2.0.12" name="2.0.12">
+ <p>
+ Apache log4net 2.0.12 is a minor fix release to address reported issues on
+ non-windows platforms.
+ </p>
+ <section id="2.0.12-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ Addresses the issues reported in
+ [<a href="https://issues.apache.org/jira/browse/LOG4NET-652">LOG4NET-652</a>]
+ and [<a href="https://issues.apache.org/jira/browse/LOG4NET-652">LOG4NET-653</a>] whereby
+ logging could throw a PlatformNotSupported exception when the username
+ is required within logs on non-Windows platforms. The implemented
+ behavior is to fall back, where possible, on Environment.UserName
+ or provide text that the facility is not supported.
+ </li>
+ </ul>
+ </section>
+ </section>
+ <section id="2.0.11" name="2.0.11">
+ Apache log4net 2.0.11 fixes incorrect version strings within the released
+ binaries and contains some minor fixes to correctly dispose of StreamWriters
+ used during log flushing, thanks to community member @NicholasNoise
+ </section>
+ <section id="2.0.10" name="2.0.10">
+ <p>
+ Apache log4net 2.0.10 improves <code>netstandard2.0</code> support
+ thanks to community member @NicholasNoise.
+ </p>
+ <section id="2.0.10-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href="https://issues.apache.org/jira/browse/LOG4NET-575">LOG4NET-575</a>]
+ Addresses CVE-2018-1285 by cherry-picking the fix from
+ Dominik Psenner, reported by Karthik Balasundaram, as it already
+ existed in the the develop branch
+ </li>
+ </ul>
+ </section>
+ </section>
- <section id="2.0.9" name="2.0.9">
- <p>
- Apache log4net 2.0.9 adds <code>netstandard2.0</code> support
- and restructures the project to enable easier build as well as build
- at AppVeyer. Project files have been updated to the modern Sdk format.
- </p>
- <section id="2.0.9-bug" name="Bug Fixes">
- <ul>
- <li>[<a href="https://issues.apache.org/jira/browse/LOG4NET-559">LOG4NET-559</a>] Add null
- checkes to avoid issues thrown by custom appenders
- </li>
- <li>[<a href="https://issues.apache.org/jira/browse/LOG4NET-563">LOG4NET-563</a>] Site styling
- copied from log4j
- </li>
- </ul>
- </section>
- </section>
- <section id="2.0.8" name="2.0.8">
- <p>
- Apache log4net 2.0.8 fixes a
- <code>LockRecursionException</code>
- that could happen
- inside the <code>FileAppender</code> under certain
- circumstances. It also adds support for
- <code>LogicalThreadContext</code>
- to the .NET Standard
- build based on <code>AsyncLocal</code> rather than
- <code>CallContext</code>.
- </p>
+ <section id="2.0.9" name="2.0.9">
+ <p>
+ Apache log4net 2.0.9 adds <code>netstandard2.0</code> support
+ and restructures the project to enable easier build as well as build
+ at AppVeyer. Project files have been updated to the modern Sdk format.
+ </p>
+ <section id="2.0.9-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href="https://issues.apache.org/jira/browse/LOG4NET-559">LOG4NET-559</a>] Add null
+ checkes to avoid issues thrown by custom appenders
+ </li>
+ <li>
+ [<a href="https://issues.apache.org/jira/browse/LOG4NET-563">LOG4NET-563</a>] Site styling
+ copied from log4j
+ </li>
+ </ul>
+ </section>
+ </section>
+ <section id="2.0.8" name="2.0.8">
+ <p>
+ Apache log4net 2.0.8 fixes a
+ <code>LockRecursionException</code>
+ that could happen
+ inside the <code>FileAppender</code> under certain
+ circumstances. It also adds support for
+ <code>LogicalThreadContext</code>
+ to the .NET Standard
+ build based on <code>AsyncLocal</code> rather than
+ <code>CallContext</code>.
+ </p>
- <section id="2.0.8-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-466'>LOG4NET-466</a>] - "LockRecursionException:
- A read lock may not be acquired with the write lock held in this mode." exception
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-550'>LOG4NET-550</a>] - Logging
- recursively from an Appender not supported for NET_4_0 and MONO_4_0
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-551'>LOG4NET-551</a>] -
- LockRecursionException when using File Appenders
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-554'>LOG4NET-554</a>] -
- LogicalThreadContext was removed in .NETStandard
- </li>
- </ul>
- </section>
+ <section id="2.0.8-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-466'>LOG4NET-466</a>] - "LockRecursionException:
+ A read lock may not be acquired with the write lock held in this mode." exception
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-550'>LOG4NET-550</a>] - Logging
+ recursively from an Appender not supported for NET_4_0 and MONO_4_0
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-551'>LOG4NET-551</a>] -
+ LockRecursionException when using File Appenders
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-554'>LOG4NET-554</a>] -
+ LogicalThreadContext was removed in .NETStandard
+ </li>
+ </ul>
+ </section>
- <section id="2.0.8-new" name="New Features">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-553'>LOG4NET-553</a>] -
- DebugAppender
- configuration should give the possibility to disable outputting loggerName as category
- </li>
- </ul>
- </section>
- </section>
+ <section id="2.0.8-new" name="New Features">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-553'>LOG4NET-553</a>] -
+ DebugAppender
+ configuration should give the possibility to disable outputting loggerName as category
+ </li>
+ </ul>
+ </section>
+ </section>
- <section id="2.0.7" name="2.0.7">
- <p>
- Apache log4net 2.0.7 fixes a glitch in nuget packaging and
- is otherwise identical to 2.0.6 (apart from the copyright
- year and assembly version). If you are not using the nuget
- package there is no reason to upgrade.
- </p>
+ <section id="2.0.7" name="2.0.7">
+ <p>
+ Apache log4net 2.0.7 fixes a glitch in nuget packaging and
+ is otherwise identical to 2.0.6 (apart from the copyright
+ year and assembly version). If you are not using the nuget
+ package there is no reason to upgrade.
+ </p>
- <section id="2.0.7-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-540'>LOG4NET-540</a>] - nuget
- dependencies for .NET Standard leak into net46
- </li>
- </ul>
- </section>
- </section>
+ <section id="2.0.7-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-540'>LOG4NET-540</a>] - nuget
+ dependencies for .NET Standard leak into net46
+ </li>
+ </ul>
+ </section>
+ </section>
- <section id="2.0.6" name="2.0.6">
+ <section id="2.0.6" name="2.0.6">
- <p>
- The Apache log4net team is now responsible for the nuget
- package, we've changed the version number of this release
- to align the version numbers. Release 2.0.6 is supposed to
- be compatible with 1.2.15.
- </p>
+ <p>
+ The Apache log4net team is now responsible for the nuget
+ package, we've changed the version number of this release
+ to align the version numbers. Release 2.0.6 is supposed to
+ be compatible with 1.2.15.
+ </p>
- <p>
- The binary distributions no longer contain assemblies
- built for the .NET Framework 1.x or Mono 1.x - you can
- build those yourself using the source distribution.
- </p>
+ <p>
+ The binary distributions no longer contain assemblies
+ built for the .NET Framework 1.x or Mono 1.x - you can
+ build those yourself using the source distribution.
+ </p>
- <p>
- Starting with 2.0.6 .NET Core - or more precisely
- .NET Standard 1.3 - has become a supported platform. Please
- note that several features of log4net are not available
- when using the .NET Core version, see <a
- href="framework-support.html#netstandard-1.3">framework
- support
- </a> for details.
- </p>
+ <p>
+ Starting with 2.0.6 .NET Core - or more precisely
+ .NET Standard 1.3 - has become a supported platform. Please
+ note that several features of log4net are not available
+ when using the .NET Core version, see <a
+ href="framework-support.html#netstandard-1.3">
+ framework
+ support
+ </a> for details.
+ </p>
- <section id="2.0.6-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-508'>LOG4NET-508</a>] - NAnt release
- build is not optimized
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-512'>LOG4NET-512</a>] - Thread
- safety
- issue in Hierarchy.cs
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-527'>LOG4NET-527</a>] - broken link
- on
- config-examples.html
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-529'>LOG4NET-529</a>] - Possible
- thread-safety bug in LoggingEvent
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-536'>LOG4NET-536</a>] - Can't
- build
- for NETCF-2.0
- </li>
- </ul>
- </section>
- <section id="2.0.6-enh" name="Improvements">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-530'>LOG4NET-530</a>] - Use UTC
- internally to avoid ambiguous timestamps
- </li>
- </ul>
- </section>
+ <section id="2.0.6-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-508'>LOG4NET-508</a>] - NAnt release
+ build is not optimized
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-512'>LOG4NET-512</a>] - Thread
+ safety
+ issue in Hierarchy.cs
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-527'>LOG4NET-527</a>] - broken link
+ on
+ config-examples.html
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-529'>LOG4NET-529</a>] - Possible
+ thread-safety bug in LoggingEvent
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-536'>LOG4NET-536</a>] - Can't
+ build
+ for NETCF-2.0
+ </li>
+ </ul>
+ </section>
+ <section id="2.0.6-enh" name="Improvements">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-530'>LOG4NET-530</a>] - Use UTC
+ internally to avoid ambiguous timestamps
+ </li>
+ </ul>
+ </section>
- <section id="2.0.6-new" name="New Features">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-467'>LOG4NET-467</a>] - Is .NET
- Core,
- will be supported in the near future, or not
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-511'>LOG4NET-511</a>] - API to flush
- appenders
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-526'>LOG4NET-526</a>] - Add
- appSetting
- conversion pattern to PatternString
- </li>
- </ul>
- </section>
- </section>
+ <section id="2.0.6-new" name="New Features">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-467'>LOG4NET-467</a>] - Is .NET
+ Core,
+ will be supported in the near future, or not
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-511'>LOG4NET-511</a>] - API to flush
+ appenders
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-526'>LOG4NET-526</a>] - Add
+ appSetting
+ conversion pattern to PatternString
+ </li>
+ </ul>
+ </section>
+ </section>
- <section id="1.2.15" name="1.2.15">
- <section id="1.2.15-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-462'>LOG4NET-462</a>] -
- ReadOnlyPropertiesDictionary not thread safe
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-488'>LOG4NET-488</a>] - Fix tests
- build
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-489'>LOG4NET-489</a>] -
- AdoNetAppender
- fails after upgrade to 2.0.4
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-490'>LOG4NET-490</a>] -
- InterProcessLock
- Tests fail
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-493'>LOG4NET-493</a>] - Log4net
- 1.2.14/ADO.NET appender throws exception when starting (1.2.13 with same config works fine)
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-494'>LOG4NET-494</a>] -
- ArgumentOutOfRange with SQLite
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-495'>LOG4NET-495</a>] - Error when
- BufferSize is >1, parameter already defined
- </li>
- </ul>
- </section>
- </section>
+ <section id="1.2.15" name="1.2.15">
+ <section id="1.2.15-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-462'>LOG4NET-462</a>] -
+ ReadOnlyPropertiesDictionary not thread safe
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-488'>LOG4NET-488</a>] - Fix tests
+ build
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-489'>LOG4NET-489</a>] -
+ AdoNetAppender
+ fails after upgrade to 2.0.4
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-490'>LOG4NET-490</a>] -
+ InterProcessLock
+ Tests fail
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-493'>LOG4NET-493</a>] - Log4net
+ 1.2.14/ADO.NET appender throws exception when starting (1.2.13 with same config works fine)
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-494'>LOG4NET-494</a>] -
+ ArgumentOutOfRange with SQLite
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-495'>LOG4NET-495</a>] - Error when
+ BufferSize is >1, parameter already defined
+ </li>
+ </ul>
+ </section>
+ </section>
- <section id="1.2.14" name="1.2.14">
- <section id="1.2.14-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-408'>LOG4NET-408</a>] - Correction
- on
- InterProcessLock
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-443'>LOG4NET-443</a>] -
- Logger.CallAppenders
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-447'>LOG4NET-447</a>] -
- MemoryAppender
- class is not thread safe
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-455'>LOG4NET-455</a>] -
- LogicalThreadContext does not flow correctly through async/await
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-479'>LOG4NET-479</a>] - Cannot
- compile
- log4net.vs2008
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-484'>LOG4NET-484</a>] -
- System.ObjectDisposedException with FileAppender+InterProcessLock
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-485'>LOG4NET-485</a>] -
- RollingFileAppender cannot be used by multiple process
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-486'>LOG4NET-486</a>] - Rolling File
- Appender with 'maxSizeRollBackups' and 'datePattern' does not detect
- existing
- logs initially
- </li>
- </ul>
- </section>
+ <section id="1.2.14" name="1.2.14">
+ <section id="1.2.14-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-408'>LOG4NET-408</a>] - Correction
+ on
+ InterProcessLock
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-443'>LOG4NET-443</a>] -
+ Logger.CallAppenders
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-447'>LOG4NET-447</a>] -
+ MemoryAppender
+ class is not thread safe
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-455'>LOG4NET-455</a>] -
+ LogicalThreadContext does not flow correctly through async/await
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-479'>LOG4NET-479</a>] - Cannot
+ compile
+ log4net.vs2008
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-484'>LOG4NET-484</a>] -
+ System.ObjectDisposedException with FileAppender+InterProcessLock
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-485'>LOG4NET-485</a>] -
+ RollingFileAppender cannot be used by multiple process
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-486'>LOG4NET-486</a>] - Rolling File
+ Appender with 'maxSizeRollBackups' and 'datePattern' does not detect
+ existing
+ logs initially
+ </li>
+ </ul>
+ </section>
- <section id="1.2.14-enh" name="Improvements">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-456'>LOG4NET-456</a>] - Include
- debug
- symbol files in release packages
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-457'>LOG4NET-457</a>] - SMTP
- Appender
- should trim leading and trailing separators from address fields
- </li>
- </ul>
- </section>
+ <section id="1.2.14-enh" name="Improvements">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-456'>LOG4NET-456</a>] - Include
+ debug
+ symbol files in release packages
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-457'>LOG4NET-457</a>] - SMTP
+ Appender
+ should trim leading and trailing separators from address fields
+ </li>
+ </ul>
+ </section>
- <section id="1.2.14-new" name="New Features">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-473'>LOG4NET-473</a>] - Option for
- file
- extension in SmtpPickupDirAppender
- </li>
- </ul>
- </section>
- </section>
+ <section id="1.2.14-new" name="New Features">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-473'>LOG4NET-473</a>] - Option for
+ file
+ extension in SmtpPickupDirAppender
+ </li>
+ </ul>
+ </section>
+ </section>
- <section id="1.2.13" name="1.2.13">
+ <section id="1.2.13" name="1.2.13">
- <section id="1.2.13-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-132'>LOG4NET-132</a>] - Environment
- variables are mistakenly case sensitive on windows
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-376'>LOG4NET-376</a>] - Race
- condition
- in AbsoluteTimeDateFormatter
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-393'>LOG4NET-393</a>] - Using
- dynamic
- methods with log4net causes NullReferenceException in StackFrameItem
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-399'>LOG4NET-399</a>] - Does not
- build
- for Compact Framework 2.0
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-404'>LOG4NET-404</a>] - assemblies
- for
- .NET 3.5 are missing ILogExtensions
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-405'>LOG4NET-405</a>] - SmtpAppender
- encoding changes
- </li>
- </ul>
-
- </section>
-
- <section id="1.2.13-enh" name="Improvements">
-
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-394'>LOG4NET-394</a>] - Lambda-based
- ILog-Extensions should catch errors
- </li>
- </ul>
-
- </section>
- </section>
-
- <section id="1.2.12" name="1.2.12">
-
- <p>
- The binary distributions no longer contain assemblies
- built for the Compact Framework 2.0 - you can build
- those yourself using the source distribution.
- </p>
-
- <section id="1.2.12-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-148'>LOG4NET-148</a>] -
- ThreadContext
- uses LocalDataStore to store ThreadSpecific data instead should be using [ThreadStatic]
- variables.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-178'>LOG4NET-178</a>] - Log4Net
- stops
- logging after appdomain recycle of ASP.NET2.0 application
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-202'>LOG4NET-202</a>] -
- AdoNetAppenderParameter.Size Property is not optional
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-218'>LOG4NET-218</a>] - Test
- StringFormatTest.TestFormatString fails
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-220'>LOG4NET-220</a>] - multiple
- users
- overwrite existing log file when RollingFileAppender is rolling over date and minimal
- locking is
- used
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-228'>LOG4NET-228</a>] -
- log4net.Util.HostName may throw System.Configuration.ConfigurationErrorsException in
- System.Net.Dns.GetHostName(). The exception should be ignored.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-266'>LOG4NET-266</a>] -
- AdoNetAppender
- does not work on a IIS 7 website using Windows authentication
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-277'>LOG4NET-277</a>] - Registering
- a
- custom Object Renderer in configuration file
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-284'>LOG4NET-284</a>] - In a
- multithreaded application, duplicate messages are output.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-294'>LOG4NET-294</a>] - Exception
- rendering object type [System.OutOfMemoryException]
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-317'>LOG4NET-317</a>] -
- LogicalThreadContext sometimes doesn't follow CallContext's logical thread
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-322'>LOG4NET-322</a>] - Conditional
- compilation symbols for .net4 Release
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-323'>LOG4NET-323</a>] -
- AbsoluteTimeDateFormatter caches string representation of now too aggressively
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-331'>LOG4NET-331</a>] -
- AdoNetAppender
- errors when writing Asp.net item when Request object is null
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-335'>LOG4NET-335</a>] - Lost the
- ability
- to monitor changes to logger config files when you call ConfigureAndWatch multiple times
- with
- different Config File Names - worked fine on 1.2.10.0
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-341'>LOG4NET-341</a>] -
- RemotingAppender
- Error
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-343'>LOG4NET-343</a>] -
- ArgumentOutOfRangeException in log4net hierarchy on "." logger name
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-347'>LOG4NET-347</a>] - Log4net not
- working in an ASP.Net environment with medium trust
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-348'>LOG4NET-348</a>] -
- System.IndexOutOfRangeException when StackFrameLevel is greater then StackFrames length
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-352'>LOG4NET-352</a>] - CS0419
- during
- build with Mono >2.6
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-360'>LOG4NET-360</a>] -
- EventLogAppender
- can corrupt the event log on Windows Vista and higher if the string is longer than 31839
- bytes
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-361'>LOG4NET-361</a>] -
- RollingLogFileAppender does not correctly initialize the backup index when style is date or
- composite
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-369'>LOG4NET-369</a>] -
- preserveLogFileNameExtension is not considered when rolling over time after an application
- restart
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-370'>LOG4NET-370</a>] -
- RemoteSyslogAppender doesn't properly handle newline in log message
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-371'>LOG4NET-371</a>] - Log with
- formatting doesn't call custom renderers (IObjectRenderer)
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-375'>LOG4NET-375</a>] - typo /
- misspelling in log message
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-378'>LOG4NET-378</a>] - Rolling log
- file
- is overwritten when application is restarted
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-379'>LOG4NET-379</a>] -
- NullReferenceException in FileAppender when file is not filled.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-382'>LOG4NET-382</a>] -
- TargetInvocationException occurs because MESSAGE_SIZE fields in EventLogAppender are
- initialized
- in wrong order
- </li>
- </ul>
- </section>
-
- <section id="1.2.12-enh" name="Improvements">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-222'>LOG4NET-222</a>] - [PATCH]
- Improve
- AnsiColorTerminalAppender to support marking colors as Light
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-223'>LOG4NET-223</a>] - [PATCH]
- Improve
- AnsiColorTerminalAppender to support marking colors as Light
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-232'>LOG4NET-232</a>] - Use
- ReaderWriterLockSlim instead of ReaderWriterLock.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-259'>LOG4NET-259</a>] - Log4Net does
- not
- create a new tab in Chainsaw
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-283'>LOG4NET-283</a>] -
- OnlyOnceErrorHandler is not subclass-friendly
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-292'>LOG4NET-292</a>] - Managed
- ColoredConsoleAppender for .NET2/Mono.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-315'>LOG4NET-315</a>] - SmtpAppender
- -
- Add support for ignoring certificate errors
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-316'>LOG4NET-316</a>] - Provide a
- Layout
- Pattern that is re-evaluated on each use
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-318'>LOG4NET-318</a>] - log4net
- doesn't
- pass verification
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-334'>LOG4NET-334</a>] - Appender
- Faill
- over
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-354'>LOG4NET-354</a>] - E-mail
- encoding
- configuration setting for SmtpAppender
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-362'>LOG4NET-362</a>] - [PATCH]
- SystemInfo.AssemblyLocationInfo throws unhandled ArgumentException "Absolute path
- required"
- when exe is started via UNC path
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-386'>LOG4NET-386</a>] - Can't
- access
- ThreadContext properties
- </li>
- </ul>
- </section>
-
- <section id="1.2.12-new" name="New Features">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-290'>LOG4NET-290</a>] - Add
- Lambda-based
- ILog-Extensions (embedded log.IsEnabled)
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-342'>LOG4NET-342</a>] - Add a way to
- prevent silent failure
- </li>
- </ul>
- </section>
- </section>
-
- <section id="1.2.11" name="1.2.11">
- <p>
- log4net 1.2.11 is not only a bugfix release, it also
- adds support for Microsoft® .NET 4.0 as well as the client profiles
- of .NET 3.5 and .NET 4.0.
- </p>
-
- <p>
- Starting with this release log4net uses a new strong
- name key but we also provide a binary distribution using
- the "old" strong name key of log4net 1.2.10 and earlier.
- See <a href="faq.html#two-snks">the FAQ</a> for details.
- </p>
-
- <p>
- The binary distributions no longer contain assemblies
- built for the Compact Framework 1.0 or the Shared Source
- CLI - you can build those yourself using the source
- distribution.
- </p>
-
- <section id="1.2.11-breaking" name="Breaking Changes">
- <p>
- The signature of
- <code>ILoggerFactory.CreateLogger</code>
- has changed.
- </p>
- </section>
-
- <section id="1.2.11-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-76'>LOG4NET-76</a>] -
- TextWriterAdapter
- is not thread safe
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-79'>LOG4NET-79</a>] -
- SecurityException
- thrown in LogicalThreadContextProperties GetProperties
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-81'>LOG4NET-81</a>] -
- LoggerRepositorySkeleton's OnConfigurationChanged method always raises its event with
- EventArgs.Empty instead of passing through its EventArgs parameter.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-93'>LOG4NET-93</a>] - Typos for node
- name in tutorial, excess quote, invalid XML
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-94'>LOG4NET-94</a>] - Incorrect
- config
- file for ..\examples\net\1.0\Tutorials\ConsoleApp
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-95'>LOG4NET-95</a>] -
- Level.CompareTo()
- may result a wrong Value -> sorting of Levels does not work
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-113'>LOG4NET-113</a>] -
- SystemInfo.GetTypeFromString() raises NotSupportedException
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-123'>LOG4NET-123</a>] -
- EnvironmentPatternConverter does not expand User or System level environment variables under
- Windows
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-126'>LOG4NET-126</a>] - Links on the
- log4net Examples page do not work, including the overview link explaining why the other
- links do
- not work
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-128'>LOG4NET-128</a>] - Either
- documentation is incorrect or a bug in SmtpAppender
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-129'>LOG4NET-129</a>] -
- EventLogAppender
- EventID parsing does not handle Active Properties properly
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-135'>LOG4NET-135</a>] - Bad example
- code
- in documentation
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-137'>LOG4NET-137</a>] -
- log4net.Filter.LevelMatchFilter does not work anymore
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-143'>LOG4NET-143</a>] - Invalid
- Repository Config Uri composition from "log4net.Config" application setting
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-146'>LOG4NET-146</a>] -
- System.NullReferenceException on FindAndRender object
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-158'>LOG4NET-158</a>] -
- XMLConfigurator.ConfigureAndWatch() leaks resources if called multiple times
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-167'>LOG4NET-167</a>] -
- ArrayOutOfBounds
- Exception in MemoryAppender.getEvents()
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-212'>LOG4NET-212</a>] - Threading
- bug in
- the PatternConverter.cs
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-214'>LOG4NET-214</a>] -
- EventLogAppender
- should also use config file to set EventId
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-215'>LOG4NET-215</a>] - Exception on
- Convert for return %class{1} name
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-229'>LOG4NET-229</a>] - Japanese
- characters get garbled with log4net.Layout.XmlLayoutSchemaLog4j
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-241'>LOG4NET-241</a>] - Issue
- tracking
- page does not link to project
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-242'>LOG4NET-242</a>] - Download
- page
- does not have link to KEYS file
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-243'>LOG4NET-243</a>] - broken link
- on
- http://logging.apache.org/log4net/release/example-apps.html
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-244'>LOG4NET-244</a>] -
- SmtpAppender.To
- Property has incorrect delimiter
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-257'>LOG4NET-257</a>] - Visual
- Studio
- 2010 .NET 4.0 Application does not copy log4net lib to bin directory
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-265'>LOG4NET-265</a>] -
- RemoteFileAppender Tests fail on Windows 7
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-274'>LOG4NET-274</a>] - log4net
- doesn't
- log when running a .Net 4.0 Windows application built in Release mode
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-297'>LOG4NET-297</a>] -
- AppenderSkeleton.RequiresLayout docs and implementation don't match
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-300'>LOG4NET-300</a>] - FilterTest
- doesn't
- compile for .Net 2.0
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-301'>LOG4NET-301</a>] - Unit tests
- fail
- on a clean checkout on .NET 2.0 using NAnt
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-310'>LOG4NET-310</a>] -
- EventLogAppender's
- ActivateOptions throws SecurityException on Vista/Win2k3 and later when not run as
- administrator
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-311'>LOG4NET-311</a>] - MinimalLock
- and
- AppendToFile=false don't work together in trunk's FileAppender
- </li>
- </ul>
- </section>
-
- <section id="1.2.11-enh" name="Improvements">
- <ul>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-31'>LOG4NET-31</a>] - Allow user to
- pass
- in additional parameters to <converter> node via some kind of <property> tag
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-38'>LOG4NET-38</a>] -
- EventLogAppender:
- Add support for setting the Category on Event Log messages.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-66'>LOG4NET-66</a>] -
- PreserveFileExtension with StaticFileName
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-77'>LOG4NET-77</a>] - A small
- improvement of log4net.Layout.Pattern.ExceptionPatternConverter - added 'Option'
- propery
- support
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-88'>LOG4NET-88</a>] - support .NET
- 2.0
- connectionStrings configuration section
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-96'>LOG4NET-96</a>] - Expose the
- Message, Exception, and ErrorCode properties of OnlyOnceErrorHandler.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-97'>LOG4NET-97</a>] - Make Hierarchy's
- ILoggerFactory aware of the repository's LevelMap
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-98'>LOG4NET-98</a>] - Update header
- comment in files to be compliant with new Apache header requirements:
- http://www.apache.org/legal/src-headers.html for 11/1/2006 deadline
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-100'>LOG4NET-100</a>] -
- IPAddressConverter improvement for .NET 2 or .NET 3
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-106'>LOG4NET-106</a>] -
- TraceAppender :
- Add switch to disable using logger name as trace category
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-112'>LOG4NET-112</a>] - Add support
- to
- the UdpAppender for IP v6 remote addresses
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-131'>LOG4NET-131</a>] - Add Cc and
- Bcc
- support to SmtpAppender
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-141'>LOG4NET-141</a>] - Add
- CreateConnection method to AdoNetAppender to allow subclasses to have control of
- IDbConnection.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-153'>LOG4NET-153</a>] - Make it
- easier
- to configure multiple appenders in code using BasicConfigurator
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-157'>LOG4NET-157</a>] - FAQ for
- getting
- the fully-qualified name of a class
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-164'>LOG4NET-164</a>] - using a
- named
- mutex for file appenders
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-170'>LOG4NET-170</a>] -
- Documentation
- improvement re: fixing and active properties
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-246'>LOG4NET-246</a>] - Make it
- possible
- to choose whether or not to watch configuration files specified using the "log4net.Config"
- appsetting key
- </li>
- </ul>
-
- </section>
- <section id="1.2.11-new" name="New Features">
- <ul>
- <li>The various static <code>Configure</code> methods of the <code>Configurator</code> classes
- now
- return collections of configuration messages rather than <code>void</code>.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-59'>LOG4NET-59</a>] - add the
- ability to
- roll files based on universal time (UTC).
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-64'>LOG4NET-64</a>] - add the
- ability to
- preserve the log file name extension when rolling the log file.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-87'>LOG4NET-87</a>] - Support
- ASP.Net
- related PatternConverters to allow items from the HttpContext.Current.Session, Cache,
- Request,
- etc. to be captured.
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-92'>LOG4NET-92</a>] - Build for
- Compact Framework 2.0
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-107'>LOG4NET-107</a>] - Added
- ExceptionEvaluator
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-115'>LOG4NET-115</a>] - Expand
- UserAppDataPath in filename
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-116'>LOG4NET-116</a>] - allow
- smtp
- to ssl authenticate and with certificates.
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-154'>LOG4NET-154</a>] - Add a
- StackTracePatternConverter to display method calls leading up to log message
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-155'>LOG4NET-155</a>] - Add
- TimeEvaluator
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-168'>LOG4NET-168</a>] - New
- property
- ReplyTo address for the SmtpAppender required
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-176'>LOG4NET-176</a>] -
- Buildable
- with VS 2008 and .NET FW 3.5
- </li>
- <li>[<a href='https://issues.apache.org/jira/browse/LOG4NET-233'>LOG4NET-233</a>] - Support
- .NET
- 4.0 including Client Profile
- </li>
- </li>
- </ul>
- </section>
-
- </section>
-
- <section id="1.2.10" name="1.2.10">
-
- <section id="1.2.10-bug" name="Bug Fixes">
- <ul>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-21'>LOG4NET-21</a>] -
- RemotingAppender
- fails once NDC becomes empty
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-22'>LOG4NET-22</a>] - XmlLayout
- allows
- output of invalid control characters
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-23'>LOG4NET-23</a>] -
- example-apps.html
- links are off by one folder level
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-25'>LOG4NET-25</a>] -
- RollingFileAppender
- can fail if RollOverIfDateBoundaryCrossing required
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-28'>LOG4NET-28</a>] - AdoNetAppender
- does
- not support inserting NULL into columns
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-29'>LOG4NET-29</a>] -
- LevelMatchFilter
- should return Neutral when no match is found
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-32'>LOG4NET-32</a>] - AdoNetAppender
- losing first entry
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-35'>LOG4NET-35</a>] - Exception
- rendering
- ThreadContextStack if null value pushed into stack
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-36'>LOG4NET-36</a>] -
- System.Diagnostics.Trace may throw exception if AppDomain does not have config file
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-40'>LOG4NET-40</a>] -
- RollingFileAppender
- does not limit files to MaxSizeRollBackups when CountDirection is 1
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-41'>LOG4NET-41</a>] -
- RollingFileAppender
- roll over date fail
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-42'>LOG4NET-42</a>] - Serialised
- LoggingEvent does not preserve the Fix flags
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-43'>LOG4NET-43</a>] - Specifying an
- empty
- string as a property in the config file results in an error
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-44'>LOG4NET-44</a>] - XmlLayout emits
- all
- properties under a node named global-properties, rather than just properties.
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-49'>LOG4NET-49</a>] -
- CountingQuietTextWriter does not count strings written with WriteLine
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-50'>LOG4NET-50</a>] -
- Process.StartTime
- hangs on some systems
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-60'>LOG4NET-60</a>] - Bug in
- RollingFileAppender.cs causing failure to timely roll files on monthly interval
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-63'>LOG4NET-63</a>] - 1.2.9.0
- Documentation typos
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-65'>LOG4NET-65</a>] - Unhandled
- SecurityException exception for FileIOPermission while loading configuration file
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-67'>LOG4NET-67</a>] - CVE-2006-0743
- Security vulnerability in LocalSyslogAppender
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-69'>LOG4NET-69</a>] - Exception
- thrown
- when *Format methods are given a malformed format string
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-70'>LOG4NET-70</a>] - CoreDll.dll
- referenced with different capitalisation
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-73'>LOG4NET-73</a>] -
- ADONetAppender.ActivateOptions() leaks database connection when called multiple times
- </li>
- </ul>
- </section>
-
- <section id="1.2.10-new" name="New Features">
- <ul>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-11'>LOG4NET-11</a>] - Add Flush
- command
- to API
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-24'>LOG4NET-24</a>] - Programmatic
- flush
- of BufferingAppenderSkeleton buffer
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-37'>LOG4NET-37</a>] - Allow the
- RepositorySelector type to be specified using the AppSettings config
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-46'>LOG4NET-46</a>] - Support
- appenders
- that can output multiple events efficiently
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-51'>LOG4NET-51</a>] - WmiAppender
- </li>
- </ul>
- </section>
-
- <section id="1.2.10-enh" name="Improvements">
- <ul>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-3'>LOG4NET-3</a>] - Support per event
- patterns in FileAppender File name
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-13'>LOG4NET-13</a>] - Allow
- SMTPAppender
- to have replaceable parameters in Subject
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-15'>LOG4NET-15</a>] - Email high
- "importance" priority setting with SmtpAppender
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-17'>LOG4NET-17</a>] - Line-wrapping
- Appender Layouts
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-33'>LOG4NET-33</a>] - Ability to use
- global property to point to log4net configuration file
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-34'>LOG4NET-34</a>] - Allow xml
- config
- values to be set via XmlNodeType.CDATA or XmlNodeType.Text rather than just value="foo"
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-45'>LOG4NET-45</a>] - PluginAttribute
- does not allow plugin type to be specified as a Type, only as a string
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-52'>LOG4NET-52</a>] - Allow XML
- configurator to set properties of type Object
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-53'>LOG4NET-53</a>] - Allow
- repository
- properties to be set in the config file
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-56'>LOG4NET-56</a>] - Support
- rendering
- IEnumerator objects as well as ICollections
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-58'>LOG4NET-58</a>] - Support clean
- build
- on .NET 2.0
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-72'>LOG4NET-72</a>] - Performance of
- ILog.xxxFormat methods
- </li>
- <li>[<a href='http://issues.apache.org/jira/browse/LOG4NET-74'>LOG4NET-74</a>] - Change
- MemoryAppender member variables to protected
- </li>
- </ul>
- </section>
-
- </section>
-
- <section id="1.2.9" name="1.2.9 Beta">
-
- <section id="1.2.9-breaking" name="Breaking Changes">
- <h3>Renamed namespaces</h3>
- <p>
- Renamed namespace <span class="code">log4net.spi</span> to <span class="code">
- log4net.Core</span>.
- Renamed namespace <span class="code">log4net.helpers</span> to <span class="code">
- log4net.Util</span>.
- </p>
- <h3>Renamed config classes and attributes</h3>
- <p>
- In the <span class="code">log4net.Config</span> namespace the <span class="code">
- DOMConfigurator</span>,
- <span class="code">DOMConfiguratorAttribute</span>, <span class="code">DomainAttribute</span>,
- and <span class="code">AliasDomainAttribute</span> have been marked as obsolete. These types are
- still available and functional in this release.
- </p>
- <p>
- The <span class="code">XmlConfigurator</span> and
- <span class="code">XmlConfiguratorAttribute</span>
- types replace <span class="code">DOMConfigurator</span> and
- <span class="code">DOMConfiguratorAttribute</span>. The
- <span class="code">RepositoryAttribute</span>
- and <span class="code">AliasRepositoryAttribute</span> types replace
- <span class="code">DomainAttribute</span>
- and <span class="code">AliasDomainAttribute</span>.
- </p>
- <h3>Fixed pascal casing of type names</h3>
- <p>
- Renamed <span class="code">AdoNetAppender</span>, <span class="code">AspNetTraceAppender</span>,
- <span class="code">SmtpAppender</span>, <span class="code">Iso8601DateFormatter</span>,
- <span class="code">MdcFilter</span>, and <span class="code">NdcFilter</span>.
- Note that the config file type resolver is case insensitive so this is only a breaking change
- for code that programmatically creates a type that has been renamed.
- </p>
- <h3>Layouts changed to stream their output to a
- <span class="code">TextWriter</span>
- </h3>
- <p>
- Layouts have been changed to format their output to a
- <span class="code">TextWriter</span>
- rather than return a string. This increases performance and reduces temporary object creation.
- </p>
- <h3>C style string escapes no longer supported by config parser</h3>
- <p>
- The XML config parser no longer supports decoding C style escape sequences in strings.
- Previously sequences like <span class="code">\n</span> and
- <span class="code">\\</span>
- where decoded. Instead use the appropriate XML encodings as required.
- </p>
- </section>
-
- <section id="1.2.9-new" name="New Features">
- <h3>New CLI build</h3>
- <p>
- A new log4net assembly is built that targets all CLI 1.0 compatible runtimes.
- This build is essentially a common subset of the Mono 1.0 and .NET 1.0 builds.
- It is built using the MS .NET 1.0 compiler and libraries but does not use any
- platform specific APIs.
- </p>
- <p>
- This build is only available in release configuration and can be found at
- <span class="code">bin\cli\1.0\release</span>.
- </p>
- <h3>Logging contexts</h3>
- <p>
- Logging contexts can be used to record contextual data that is relevant to the current
- process. Logging contexts are both an extension of the concepts embodied in the
- <span class="code">MDC</span>
- and <span class="code">NDC</span> and a replacement for
- them. The <span class="code">MDC</span> and <span class="code">NDC</span> have been
- reimplemented to use the <span class="code">ThreadContext</span> as storage.
- </p>
- <p>
- The logging contexts provide a single unified view that cuts across different
- scopes within an application.
- The contexts are layered in the following order of narrowing scope:
- <span class="code">GlobalContext</span>, <span class="code">ThreadContext</span>,
- <span class="code">LogicalThreadContext</span>, and <span class="code">LoggingEvent</span>.
- Context values specified in a narrower scope hide the matching value in a wider scope.
- </p>
- <h3>
- <span class="code">PatternLayout</span>
- customization and long pattern names
- </h3>
- <p>
- The <span class="code">PatternLayout</span> now supports long pattern names.
- These pattern names are significantly more readable than the single character patterns.
- </p>
- <p>
- The <span class="code">PatternLayout</span> now supports custom patterns. New patterns
- can be defined in the config file:
- </p>
- <div class="syntax">
- <pre class="code">
- <layout type="log4net.Layout.PatternLayout">
-
- <converter>
- <name value="myConverter" />
- <type value="TestApp.MyPatternConverter, TestApp" />
- </converter>
-
- <conversionPattern value="%-5level %logger - %myConverter - %message%newline" />
- </layout>
- </pre>
- </div>
- <p>
- The above config defines a custom pattern called
- <span class="code">myConverter</span>
- which is bound to the
- <span class="code">TestApp.MyPatternConverter, TestApp</span>
- type. This type must extend the
- <span class="code">log4net.Util.PatternConverter</span>
- base class. The custom pattern can then be used in the pattern string.
- </p>
- <p>
- For full details see the SDK Reference entry: <a
- href="sdk/html/T_log4net_Layout_PatternLayout.htm">
- log4net.Layout.PatternLayout</a>.
- </p>
- <h3>
- <span class="code">PatternString</span>
- for pattern based configuration
- </h3>
- <p>
- A new pattern based type, <span class="code">PatternString</span>, can be used in
- the config file to set string properties using a pattern syntax. For example the
- File property of the FileAppender could be set as follows:
- </p>
- <div class="syntax">
- <pre class="code">
- <file type="log4net.Util.PatternString">
-
- <converter>
- <name value="folder" />
- <type value="TestApp.SpecialFolderPatternConverter,TestApp" />
- </converter>
-
- <conversionPattern value="%folder{LocalApplicationData}\log-file.txt" />
- </file>
- </pre>
- </div>
- <p>
- The code for the
- <span class="code">SpecialFolderPatternConverter</span>
- is as follows:
- </p>
- <div class="syntax">
- <pre class="code">
- public class SpecialFolderPatternConverter : log4net.Util.PatternConverter
- {
- override protected void Convert(System.IO.TextWriter writer, object state)
- {
- Environment.SpecialFolder specialFolder =
- (Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), base.Option, true);
-
- writer.Write(Environment.GetFolderPath(specialFolder));
- }
- }
- </pre>
- </div>
- <p>
- For full details see the SDK Reference entry: <a
- href="sdk/html/T_log4net_Util_PatternString_htm">
- log4net.Util.PatternString</a>.
- </p>
- <h3>Loading configuration from a URI</h3>
- <p>
- The <span class="code">XmlConfigurator</span> methods now support loading the
- configuration data from a URI. Config can be loaded from any URI supported by the
- <span class="code">System.Net.WebRequest</span>
- class.
- </p>
- <h3>Support for No-Touch deployment</h3>
- <p>
- Log4net supports configuring No-Touch deployment applications using the
- <span class="code">XmlConfiguratorAttribute</span>. If a relative config file
- or extension is specified then this is resolved relative to the deployment
- URI.
- </p>
- <h3>Config file parser enhancements</h3>
- <p>
- The config file parser has been enhanced to support specifying the property subtype, or
- intermediate
- type,
- directly on the property element, for example:
- </p>
- <div class="syntax">
- <pre class="code">
- <layout type="log4net.Layout.PatternLayout" value="%message%newline"
- />
- </pre>
- </div>
- <p>
- Implicit conversion will be attempted between the value string and the type specified,
- and then again between the type and the target property type.
- </p>
- <h3>.NET string formatting syntax</h3>
- <p>
- Added .NET <span class="code">String.Format</span> style formatting syntax methods to
- the <span class="code">ILog</span> interface. The new methods are:
- <span class="code">DebugFormat</span>, <span class="code">InfoFormat</span>,
- <span class="code">WarnFormat</span>,
- <span class="code">ErrorFormat</span>
- and <span class="code">FatalFormat</span>.
- </p>
- <h3>Customizable levels</h3>
- <p>
- Levels are defined by the repository <span class="code">LevelMap</span>. The defined
- levels, the relative ordering of levels and level display names can be configured on
- a per-repository basis.
- </p>
- <h3>Per-appender security contexts</h3>
- <p>
- Appenders that interact with controlled platform resources, e.g. files, can be
- configured to use a separate security context when accessing these resources.
- The calling thread may not have appropriate privileges to access the resource a
- custom <span class="code">SecurityContext</span> can be used to elevate the
- privileges of the appender. The
- <span class="code">WindowsSecurityContext</span>
- is used to specify alternative credentials on the Windows platform.
- </p>
- <h3>Added new appenders</h3>
- <dl>
- <dt>
- <span class="code">AnsiColorTerminalAppender</span>
- </dt>
- <dd>
- <p>
- The <span class="code">AnsiColorTerminalAppender</span> writes events to
- the application's ANSI terminal window. It can be configured to specify
- the text and background colors for different level events. Note that Console
- applications running on Windows do not have an ANSI terminal window and
- should use the <span class="code">ColoredConsoleAppender</span> instead.
- </p>
- </dd>
- <dt>
- <span class="code">LocalSyslogAppender</span>
- </dt>
- <dd>
- <p>
- Logs events to a local syslog service. This appender uses the POSIX libc syslog
- library functions. If these functions are not available on the local system then
- this appender will not work!
- </p>
- </dd>
- <dt>
- <span class="code">RemoteSyslogAppender</span>
- </dt>
- <dd>
- <p>
- The <span class="code">RemoteSyslogAppender</span> uses the BSD syslog protocol to
- log to a syslog daemon. The syslogd listens for for messages on UDP port 514.
- </p>
- </dd>
- <dt>
- <span class="code">TelnetAppender</span>
- </dt>
- <dd>
- <p>
- The <span class="code">TelnetAppender</span> accepts socket connections and streams
- logging messages back to the client. The output is provided in a telnet-friendly way
- so that a log can be monitored over a TCP/IP socket.
- This allows simple remote monitoring of application logging.
- </p>
- </dd>
- </dl>
- <h3>Added new <span class="code">LoggerMatchFilter</span> filter
- </h3>
- <p>
- Added <span class="code">LoggerMatchFilter</span> which matches a string against
- the event's logger name.
- </p>
- <h3>Pluggable file locking models for the
- <span class="code">FileAppender</span>
- </h3>
- <p>
- The <span class="code">FileAppender</span> (and by extension the
- <span class="code">RollingFileAppender</span>) now support pluggable file
- locking models. The default model, <span class="code">ExclusiveLock</span>,
- maintains the current exclusive file locking behavior. An alternative
- model, <span class="code">MinimalLock</span>, can be used to support writing to
- a single output file from multiple processes.
- </p>
- <p>
- For full details see the SDK Reference entry: <a
- href="sdk/html/T_log4net_Appender_FileAppender_LockingModel.htm">
- log4net.Appender.FileAppender.LockingModel</a>.
- </p>
- <h3>
- <span class="code">RollingFileAppender</span>
- roll once
- </h3>
- <p>
- The <span class="code">RollingFileAppender</span> now supports a new
- rolling style, <span class="code">Once</span>. In this mode the appender
- will roll the file once per run.
- </p>
- <h3>
- <span class="code">SmtpAppender</span>
- authentication
- </h3>
- <p>
- On the .NET 1.1 platform only, the <span class="code">SmtpAppender</span> supports
- authenticating
- against the mail server using either username and password or integrated NTLM authentication.
- </p>
- <h3>
- <span class="code">AdoNetAppender</span>
- ReconnectOnError
- </h3>
- <p>
- Added new configuration property to <span class="code">AdoNetAppender</span>.
- Setting <span class="code">ReconnectOnError</span> to
- <span class="code">true</span>
- will force the appender to attempt to reconnect to the database if the connection
- is lost.
- </p>
- <h3>
- <span class="code">UdpAppender</span>
- hostname support
- </h3>
- <p>
- The <span class="code">UdpAppender</span> config property
- <span class="code">RemoteAddress</span>
- can now be specified as a DNS hostname string. The hostname is resolved to an IP address.
- </p>
- </section>
-
- <section id="1.2.9-other" name="Other Changes">
- <h3>FxCop compliance</h3>
- <p>
- Updates to bring the internal code in line with the current FxCop rules.
- </p>
- <h3>Separate NUnit tests</h3>
- <p>
- Moved the NUnit tests into a separate project, <span class="code">log4net.Tests</span>.
- </p>
- <h3>Bug Fixes</h3>
- <dl>
- <dt>
- <span class="code">RemotingAppender</span>
- </dt>
- <dd>
- <p>
- Sends events from a <span class="code">ThreadPool</span> thread
- rather than the calling thread to prevent transfer,
- and potential loss, of the <span class="code">CallContext</span>.
- </p>
- </dd>
- <dt>
- <span class="code">RollingFileAppender</span>
- </dt>
- <dd>
- <p>
- Fixed date rolling period detection for non UTC timezones.
- </p>
- </dd>
- <dt>
- <span class="code">ColoredConsoleAppender</span>
- </dt>
- <dd>
- <p>
- Updated to support writing more than 30,000 chars in a single message.
- Fixed background color overspill if the console window needs to
- scroll the contents.
- </p>
- </dd>
- </dl>
- </section>
-
- </section>
-
- <section id="1.2.0b8" name="1.2.0 Beta 8">
- <h3>Changed assembly name to
- <span class="code">log4net</span>
- </h3>
- <p>
- The build output is now
- <span class="code">log4net.dll</span>
- for all frameworks. This is a breaking change.
- </p>
- <p>
- To resolve cross platform and cross version issues we have
- changed the log4net assembly to use a common name for all
- frameworks. The assembly friendly name is now <span class="code">log4net</span>.
- The builds for each framework can now be differentiated
- by the assembly title. This includes the name of the framework
- that the assembly was built on.
- </p>
- <h3>Combined Release and ReleaseStrong builds</h3>
- <p>
- The Release and ReleaseStrong builds have been consolidated into
- a single build called Release. This Release build is strongly named.
- </p>
- <h3>New Appender: ColoredConsoleAppender</h3>
- <p>
- The <span class="code">ColoredConsoleAppender</span> writes events to the
- application's console. It can be configured to specify the text and background
- colors for different level events.
- </p>
- <h3>New Appender: SmtpPickupDirAppender</h3>
- <p>
- The <span class="code">SmtpPickupDirAppender</span> generates SMTP compliant
- messages and writes them to a local directory. These files can then be read
- by an SMTP agent (e.g. the IIS SMTP Agent) and delivered.
- </p>
- <h3>New Layout: XmlLayoutSchemaLog4j</h3>
- <p>
- This new layout formats the logging events as XML which complies with
- the Apache log4j™ event dtd. This can be used to transfer log event from log4net
- to log4j. Currently the only appender that can communicate directly with
- log4j is the <span class="code">UdpAppender</span>.
- </p>
- <h3>New PatternLayout conversion characters</h3>
- <p>
- Added support for capturing the current thread principal name and the
- app domain friendly name for each logging event.
- </p>
- <dl>
- <dt>%a</dt>
- <dd>
- Used to output the friendly name of the AppDomain where the
- logging event was generated.
- </dd>
- <dt>%u</dt>
- <dd>
- Used to output the user name for the currently active user
- (<span class="code">Principal.Identity.Name</span>).
- </dd>
- </dl>
- <h3>Types specified in the config file are now loaded ignoring case</h3>
- <p>
- All types specified in the configuration files are now loaded
- using a case insensitive method.
- </p>
- <h3>Fine grained fixing for buffered events</h3>
- <p>
- The <span class="code">LoggingEvent</span> now supports fine grained
- fixing of data that needs to be accessed outside the append context,
- e.g. when an event is buffered. The new
- <span class="code">Fix</span>
- property takes a combination of the
- <span class="code">FixFlags</span>
- enumeration values.
- </p>
- <h3>Code updated inline with FxCop 1.21</h3>
- <p>
- In line with the FxCop 1.21 guidelines:
- Sealed utility classes. Added serialization security demand to GetObjectData.
- Renamed parameters.
- </p>
- <h3>EventLogAppender 32K Limit</h3>
- <p>
- There is a limit of 32K characters in an EventLog message. Added a
- check that only logs the first 32000 characters from the rendered
- message.
- </p>
- </section>
-
- <section id="1.2.0b7" name="1.2.0 Beta 7">
- <h3>Updated to support the Microsoft .NET Framework 1.1 Final</h3>
- <p>
- Updated to support the Microsoft .NET Framework 1.1 Final Beta (1.1.4322).
- </p>
- <h3>Features document</h3>
- <p>
- Added a new document that covers the main features of log4net.
- See the
- <a href="features.html">features</a>
- document for more information.
- </p>
- <h3>Hierarchy disabled until it is configured</h3>
- <p>
- The Hierarchy is now disabled until it has been configured.
- All messages logged to the Hierarchy before it has been
- configured will be ignored without an error message being
- written to the console.
- </p>
- <p>
- If you are configuring log4net programmatically (i.e. not using
- one of the built-in configurators) you must set the
- <span class="code">ILoggerRepository.Configured</span>
- property
- to <span class="code">true</span> once you have configured
- the repository.
- </p>
- <p>
- The no appenders defined for a logger message will no longer be
- displayed on the console by default. This message will only be
- displayed if internal debugging is enabled.
- </p>
- <h3>New examples in VisualBasic.NET, JScript and Managed C++</h3>
- <p>
- New examples in VisualBasic.NET, JScript and Managed C++.
- TODO Link to document about examples.
- </p>
- <h3>Code and Documentation Updates</h3>
- <p>
- Code fixes. Documentation and manual updates.
- See the ChangeLog for more information.
- </p>
- <h3>Added document with example appender configurations</h3>
- <p>
- See the
- <a href="config-examples.html">Example Appender Configuration</a>
- document for more information.
- </p>
- </section>
-
- <section id="1.2.0b6" name="1.2.0 Beta 6">
- <h3>Added support for multiple frameworks</h3>
- <p>
- log4net 1.2.0 beta 6 adds support for the the following frameworks:
- </p>
- <div class="table">
- <table cellspacing="0">
- <colgroup>
- <col style="text-align: left;"/>
- </colgroup>
- <tr>
- <th>
- Framework
- </th>
- <th>
- Website
- </th>
- </tr>
- <tr style="vertical-align: top;">
- <td>Microsoft .NET Framework 1.1 Final Beta (1.1.4322)</td>
- <td>
- <a href="http://msdn.microsoft.com/net">http://msdn.microsoft.com/net</a>
- </td>
- </tr>
- <tr style="vertical-align: top;">
- <td>Microsoft .NET Compact Framework 1.0 (1.0.5000)</td>
- <td>
- <a href="http://msdn.microsoft.com/vstudio/device/compactfx.asp">
- http://msdn.microsoft.com/vstudio/device/compactfx.asp
- </a>
- </td>
- </tr>
- <tr style="vertical-align: top;">
- <td>Mono 0.23</td>
- <td>
- <a href="http://www.go-mono.org">http://www.go-mono.org</a>
- </td>
- </tr>
- <tr style="vertical-align: top;">
- <td>Microsoft Shared Source CLI 1.0</td>
- <td>
- <a href="http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp">
- http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp
- </a>
- </td>
- </tr>
- </table>
- </div>
- <br/>
- <p>
- Not all frameworks are created equal and some features have been excluded from
- some of the builds. See the <a href="framework-support.html">Framework Support</a> document for more
- information.
- </p>
- <h3>New build system using NAnt</h3>
- <p>
- The new build system allows log4net to be built for all supported frameworks and
- in all build configurations in one go.
- </p>
- <h3>New source code & distribution layout</h3>
- <p>
- The source code & distribution layout has been updated to support the new
- build environment and multiple target frameworks.
- </p>
- <h3>Removed DomainAttribute.UseDefaultDomain property</h3>
- <p>
- Updated default behavior of <span class="code">DefaultRepositorySelector</span>. Assemblies
- are now by default placed into the default domain. To specify another domain,
- the <span class="code">DomainAttribute</span> must be used. This is the opposite behavior
- to what was previously available. If you were previously specifying the
- <span class="code">DomainAttribute.UseDefaultDomain</span>
- property then you should remove it, and if the default behavior is now
- sufficient, you do not need to specify the <span class="code">DomainAttribute</span> at all.
- </p>
- <h3>Updated configuration file parser</h3>
- <p>
- Updated config file parser to use the element name as the property to set. Also
- removed <span class="code"><object></span> tag, the type attribute can now be
- specified on the property element directly.
- </p>
- <p>
- For example:
- </p>
- <div class="syntax">
- <pre class="code">
- <appender>
- <param name="Evaluator">
- <object type="log4net.spi.LevelEvaluator">
- <constructor>
- <param type="log4net.spi.Level" value="DEBUG"/>
- </constructor>
- </object>
- </param>
- </appender>
- </pre>
- </div>
- <p>
- becomes:
- </p>
- <div class="syntax">
- <pre class="code">
- <appender>
- <evaluator type="log4net.spi.LevelEvaluator">
- <threshold value="DEBUG"/>
- </evaluator>
- </appender>
- </pre>
- </div>
- <h3>Support for event ID</h3>
- <p>
- The <span class="code">EventLogAppender</span> now supports setting the event ID in the
- event log, this is taken from the <span class="code">EventID</span> property from the per
- event <span class="code">Properties</span> map on the <span class="code">LoggingEvent</span>.
- </p>
- <h3>Updated ADONetAppender</h3>
- <p/>
- <ul>
- <li>
- Added support for prepared statements and stored procedures
- </li>
- <li>
- Added <span class="code">RawTimeStampLayout</span>to correctly convert the timestamps into
- database date time format
- </li>
- <li>
- Added <span class="code">ExceptionLayout</span> to render the exception data
- </li>
- </ul>
- <p/>
- <h3>Support for front-end extension</h3>
- <p>
- This allows the logging API to be wrapped or adapted for specific purposes. Two
- extension samples are included in the distribution:
- </p>
- <div class="table">
- <table cellspacing="0">
- <colgroup>
- <col style="width: 50%; text-align: left;"/>
- <col style="width: 50%; text-align: left;"/>
- </colgroup>
- <tr>
- <th>
- Extension
- </th>
- <th>
- Description
- </th>
- </tr>
- <tr style="vertical-align: top;">
- <td>log4net.Ext.Trace</td>
- <td>Adds trace logging methods</td>
- </tr>
- <tr style="vertical-align: top;">
- <td>log4net.Ext.EventID</td>
- <td>Adds additional eventId parameter to all methods</td>
- </tr>
- </table>
- </div>
- <p/>
- <h3>Added ForwardingAppender</h3>
- <p>Forwards events to multiple sub appenders after applying filter rules.</p>
- <h3>Added BufferingForwardingAppender</h3>
- <p>Forward events to sub appenders after buffering them.</p>
- <h3>Added ASPNetTraceAppender</h3>
- <p>Logs events to the ASP.NET trace system.</p>
- <h3>Added NetSendAppender</h3>
- <p>Delivers logging events using the Windows Messenger service.</p>
- <h3>Added UdpAppender</h3>
- <p>Sends logging events as connectionless UDP datagrams to a remote host or a
- multicast group.
- </p>
- <h3>Removed obsolete methods</h3>
- <h3>Lots of updates to improve our compliance with FxCop</h3>
- <h3>Improved SDK documentation</h3>
- </section>
-
- <section id="1.2.0b5" name="1.2.0 Beta 5">
- <h3>Fixed Exception thrown when DOM Configurator called with a null XML
- Element.
- </h3>
- <p>This occurred if the configuration file did not have a log4net section defined.</p>
- <h3>Made level lookup case insensitive</h3>
- <h3>Prevented the Hierarchy's Threshold level from being set to a null reference</h3>
- </section>
-
- <section id="1.2.0b4" name="1.2.0 Beta 4">
- <h3>Added event specific properties to the logging event object</h3>
- <p>
- Appenders can add additional information to the events they are logging. The
- <span class="code">RemotingAppender</span>
- and the <span class="code">SMTPAppender</span> both add a 'hostname' property to the events.
- These properties can be accessed using the <span class="code">PatternLayout</span> with the
- %P{name} syntax.
- </p>
- <h3>Added a plugin framework</h3>
- <p>An <span class="code">IPlugin</span> interface can be attached to any repository.
- </p>
- <h3>A new RemoteLoggingServerPlugin plugin acts as the server for the
- RemotingAppender
- </h3>
- <h3>Updated the core log4net framework to work in an environment with no
- permissions
- </h3>
- <p>Specific appenders still require additional permissions to log correctly</p>
- <h3>Added support for domain aliasing using the AliasDomainAttribute</h3>
- <p>This allows a parent assembly to take control of the logging domain for child
- assemblies.
- </p>
- <h3>Added events for repository creation, configuration change, configuration reset
- and repository shutdown
- </h3>
- <h3>Added LevelMap to the ILoggerRepository interface</h3>
- <p>The mapping from level name to level object is now repository specific,
- therefore each repository can have independent mappings.
- </p>
- <h3>Moved hierarchy specific config file parser to new DOMHierarchyConfigurator class</h3>
- <p>This is controlled by the <span class="code">Hierarchy</span> object and allows for better
- encapsulation.
- </p>
- <h3>Added OnlyFixPartialEventData property to the buffered appenders</h3>
- <p>This setting causes slow settings to be ignored. This significantly improves the
- performance of the buffered appenders.
- </p>
- <h3>XML entity references are supported in the XML config file.</h3>
- <h3>Added support for expanding environment variables in <param> values</h3>
- <p>
- The environment variables must be specified as <span class="code">${FOO}</span> where
- <span class="code">FOO</span>
- is the name of the variable to expand.
- </p>
- <h3>Upgraded to use NUnit 2.0</h3>
- <h3>File appenders can specify the encoding to use for the file</h3>
- <h3>Added strong named configuration</h3>
- </section>
-
- <section id="1.2.0b3" name="1.2.0 Beta 3">
- <h3>Added log4net.Ext.Trace extension</h3>
- <p>This is a separate assembly that adds a trace level to log4net.</p>
- <h3>The default log file output directory is now the application base directory not
- the current directory
- </h3>
- <h3>Added MemoryAppender</h3>
- <p>Stores all the logging events in an in-memory buffer.</p>
- <h3>Moved the Hierarchy implementation into a separate namespace</h3>
- <p>
- The <span class="code">log4net.Repository.Hierarchy</span> namespace now contains all the
- code that is specific to the <span class="code">Hierarchy</span> implementation.
- </p>
- <h3>Refactored the DOMConfigurator and BasicConfigurator</h3>
- <p>
- The <span class="code">Hierarchy</span> specific data schema and implementation could be has
- now been moved to the <span class="code">log4net.Repository.Hierarchy</span> namespace. The
- bootstrap code for these configurators remains in the
- <span class="code">log4net.Config</span>
- namespace.
- </p>
- <h3>Replaced the DOMConfiguratorAttribute UseExecutableDomain
- property with UseDefaultDomain
- </h3>
- <p>
- This change to the implementation of the <span class="code">DOMConfiguratorAttribute</span> should
- allow the configuration of multiple assemblies to be accomplished more easily,
- especially when developing web applications (ASP.NET).
- </p>
- <h3>A few good bug fixes!</h3>
- </section>
-
- <section id="1.2.0b2" name="1.2.0 Beta 2">
- <h3>Added ADONetAppender</h3>
- <p>Thanks to TechnologyOneCorp.com.</p>
- <h3>Added TraceLogAssembly extensibility example</h3>
- <h3>Lots of bug fixes</h3>
- </section>
-
- <section id="1.2.0b1" name="1.2.0 Beta 1">
- <h3>Added 6 new examples</h3>
- <h3>Split Category class into Logger and LogManager classes</h3>
- <p>
- The instance methods from <span class="code">Category</span> have moved to the
- <span class="code">Logger</span>
- class. The static methods from <span class="code">Category</span> have moved to the
- <span class="code">LogManager</span>
- class. The <span class="code">Category</span> class still exists but for backward
- compatibility only. Changed interface <span class="code">ICategoryFactory</span> to
- <span class="code">ILoggerFactory</span>
- and the implementation class <span class="code">DefaultCategoryFactory</span> to <span class="code">
- DefaultLoggerFactory</span>.
- </p>
- <h3>Replaced Priority class with Level class</h3>
- <p>
- The <span class="code">Priority</span> class has been replaced by the <span class="code">Level
- </span> class.
- The <span class="code">Priority</span> class still exists for backward compatibility only.
- The <span class="code">Level</span> class implements a static pool of <span class="code">Level
- </span> objects.
- The <span class="code">Level</span> class is sealed and serializable.
- </p>
- <h3>Added ILoggerRepository interface implemented by Hierarchy</h3>
- <p>
- The <span class="code">Hierarchy</span> class implements the <span class="code">ILoggerRepository
- </span> interface.
- This interface is used by the <span class="code">LogManager</span> class and therefore
- allows different implementations of <span class="code">ILoggerRepository</span> to be used.
- </p>
- <h3>Enhanced NUnit tests</h3>
- <p>
- All the NUnit tests can be run using a single TestSuite: NUnitGUI
- log4net.LogManager+AllTests,log4net.dll.
- </p>
- <h3>Added support for serializing LoggingEvents</h3>
- <p>
- The <span class="code">LoggingEvent</span> class is serializable. All local state is
- captured before serialization occurs. This now allows
- <span class="code">LoggingEvent</span>
- objects to be serialized between applications or machines.
- </p>
- <h3>Added RemotingAppender</h3>
- <p>
- Delivers <span class="code">LoggingEvents</span> to a remote interface. This can be used to
- collect distributed logging into a single log file. There is an example
- remoting sink that receives the logging events, see
- <span class="code">examples\net\remoting\RemotingServer</span>
- for details.
- </p>
- <h3>Added support for rendering composite objects</h3>
- <p>
- The <span class="code">IObjectRenderer</span> interface method <span class="code">DoRender</span> now
- takes a <span class="code">RendererMap</span> argument. This allows the renderer to use the
- appropriate renderer from the <span class="code">RendererMap</span> to render any nested
- objects.
- </p>
- <h3>Added support for rendering exceptions</h3>
- <p>
- The <span class="code">DefaultRenderer</span> now has support for rendering exceptions to a
- string. This includes nested exceptions. The <span class="code">RendererMap</span> is now
- used to render exceptions in the <span class="code">LoggingEvent</span>. This allows the
- rendering of specific exceptions to be enhanced by specific renderers.
- </p>
- <h3>Added ITriggeringEventEvaluator interface</h3>
- <p>
- This interface is used by <span class="code">SMTPAppender</span> and
- <span class="code">RemotingAppender</span>
- to determine if a <span class="code">LoggingEvent</span> meets a set of user defined
- criteria. These appenders use the interface to determine whether or not to
- deliver the current buffer of events to their listener. The interface is
- implemented by the <span class="code">LevelEvaluator</span> class, which triggers above a
- set level.
- </p>
- <h3>Added regex matching to the MDCFilter, NDCFilter and StringMatchFilter</h3>
- <p>
- The <span class="code">MDCFilter</span>, <span class="code">NDCFilter</span> and
- <span class="code">StringMatchFilter</span>
- can now be configured to use regex matches in addition to substring matches.
- Set the <span class="code">RegexToMatch</span> property to use this feature.
- </p>
- <h3>Added XMLLayout</h3>
- <p>
- emits an XML element for each <span class="code">LoggingEvent</span>. This allows logging
- events to be stored and manipulated as XML. The DTD for the XML emitted is in
- the
- <span class="code">log4net-events.dtd</span>
- </p>
- <h3>Added support for <logger> and <level> elements in the
- DOMConfigurator
- </h3>
- <p>
- As the <span class="code">Category</span> and <span class="code">Priority</span> classes have been
- replaced by the <span class="code">Logger</span> and <span class="code">Level</span> classes. The
- <span class="code">DOMConfigurator</span>
- has been updated to allow the <span class="code"><logger></span> and
- <span class="code"><level></span>
- elements to be used in place of the <span class="code"><category></span> and
- <span class="code"><priority></span>
- elements. The old elements are still accepted for backward compatibility.
- </p>
- <h3>Added Threshold property to Hierarchy</h3>
- <p>
- Changed <span class="code">DisableXXX()</span> methods on <span class="code">Hierarchy</span> to a
- <span class="code">Threshold</span>
- property.
- </p>
- <h3>Added support for logging domains</h3>
- <p>
- The <span class="code">LogManager</span> supports multiple logging domains. The
- <span class="code">LogManager</span>
- uses an instance of the <span class="code">IRepositorySelector</span> class to map from
- domains to <span class="code">ILoggerRepository</span> instances. The default implementation
- is to have a separate <span class="code">ILoggerRepository</span> for each domain. When a
- call is made to the static methods on <span class="code">LogManager</span> the domain can be
- specified (as a string) or the domain can be inferred automatically from the
- calling assembly. The default behavior is for each assembly loaded into the
- process to have its own domain and <span class="code">ILoggerRepository</span>. These can
- each be configured separately. This allows standalone assemblies to use log4net
- without conflicting with other modules in the process. The domain for the
- assembly is configured using metadata attributes defined on the assembly.
- </p>
- <h3>DOMConfigurator can set params to arbitrary objects</h3>
- <p>
- Using a new <span class="code"><object></span> element, params can now be set to any
- creatable object.
- </p>
- </section>
+ <section id="1.2.13-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-132'>LOG4NET-132</a>] - Environment
+ variables are mistakenly case sensitive on windows
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-376'>LOG4NET-376</a>] - Race
+ condition
+ in AbsoluteTimeDateFormatter
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-393'>LOG4NET-393</a>] - Using
+ dynamic
+ methods with log4net causes NullReferenceException in StackFrameItem
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-399'>LOG4NET-399</a>] - Does not
+ build
+ for Compact Framework 2.0
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-404'>LOG4NET-404</a>] - assemblies
+ for
+ .NET 3.5 are missing ILogExtensions
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-405'>LOG4NET-405</a>] - SmtpAppender
+ encoding changes
+ </li>
+ </ul>
</section>
- </body>
+
+ <section id="1.2.13-enh" name="Improvements">
+
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-394'>LOG4NET-394</a>] - Lambda-based
+ ILog-Extensions should catch errors
+ </li>
+ </ul>
+
+ </section>
+ </section>
+
+ <section id="1.2.12" name="1.2.12">
+
+ <p>
+ The binary distributions no longer contain assemblies
+ built for the Compact Framework 2.0 - you can build
+ those yourself using the source distribution.
+ </p>
+
+ <section id="1.2.12-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-148'>LOG4NET-148</a>] -
+ ThreadContext
+ uses LocalDataStore to store ThreadSpecific data instead should be using [ThreadStatic]
+ variables.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-178'>LOG4NET-178</a>] - Log4Net
+ stops
+ logging after appdomain recycle of ASP.NET2.0 application
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-202'>LOG4NET-202</a>] -
+ AdoNetAppenderParameter.Size Property is not optional
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-218'>LOG4NET-218</a>] - Test
+ StringFormatTest.TestFormatString fails
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-220'>LOG4NET-220</a>] - multiple
+ users
+ overwrite existing log file when RollingFileAppender is rolling over date and minimal
+ locking is
+ used
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-228'>LOG4NET-228</a>] -
+ log4net.Util.HostName may throw System.Configuration.ConfigurationErrorsException in
+ System.Net.Dns.GetHostName(). The exception should be ignored.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-266'>LOG4NET-266</a>] -
+ AdoNetAppender
+ does not work on a IIS 7 website using Windows authentication
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-277'>LOG4NET-277</a>] - Registering
+ a
+ custom Object Renderer in configuration file
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-284'>LOG4NET-284</a>] - In a
+ multithreaded application, duplicate messages are output.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-294'>LOG4NET-294</a>] - Exception
+ rendering object type [System.OutOfMemoryException]
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-317'>LOG4NET-317</a>] -
+ LogicalThreadContext sometimes doesn't follow CallContext's logical thread
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-322'>LOG4NET-322</a>] - Conditional
+ compilation symbols for .net4 Release
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-323'>LOG4NET-323</a>] -
+ AbsoluteTimeDateFormatter caches string representation of now too aggressively
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-331'>LOG4NET-331</a>] -
+ AdoNetAppender
+ errors when writing Asp.net item when Request object is null
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-335'>LOG4NET-335</a>] - Lost the
+ ability
+ to monitor changes to logger config files when you call ConfigureAndWatch multiple times
+ with
+ different Config File Names - worked fine on 1.2.10.0
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-341'>LOG4NET-341</a>] -
+ RemotingAppender
+ Error
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-343'>LOG4NET-343</a>] -
+ ArgumentOutOfRangeException in log4net hierarchy on "." logger name
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-347'>LOG4NET-347</a>] - Log4net not
+ working in an ASP.Net environment with medium trust
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-348'>LOG4NET-348</a>] -
+ System.IndexOutOfRangeException when StackFrameLevel is greater then StackFrames length
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-352'>LOG4NET-352</a>] - CS0419
+ during
+ build with Mono >2.6
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-360'>LOG4NET-360</a>] -
+ EventLogAppender
+ can corrupt the event log on Windows Vista and higher if the string is longer than 31839
+ bytes
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-361'>LOG4NET-361</a>] -
+ RollingLogFileAppender does not correctly initialize the backup index when style is date or
+ composite
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-369'>LOG4NET-369</a>] -
+ preserveLogFileNameExtension is not considered when rolling over time after an application
+ restart
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-370'>LOG4NET-370</a>] -
+ RemoteSyslogAppender doesn't properly handle newline in log message
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-371'>LOG4NET-371</a>] - Log with
+ formatting doesn't call custom renderers (IObjectRenderer)
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-375'>LOG4NET-375</a>] - typo /
+ misspelling in log message
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-378'>LOG4NET-378</a>] - Rolling log
+ file
+ is overwritten when application is restarted
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-379'>LOG4NET-379</a>] -
+ NullReferenceException in FileAppender when file is not filled.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-382'>LOG4NET-382</a>] -
+ TargetInvocationException occurs because MESSAGE_SIZE fields in EventLogAppender are
+ initialized
+ in wrong order
+ </li>
+ </ul>
+ </section>
+
+ <section id="1.2.12-enh" name="Improvements">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-222'>LOG4NET-222</a>] - [PATCH]
+ Improve
+ AnsiColorTerminalAppender to support marking colors as Light
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-223'>LOG4NET-223</a>] - [PATCH]
+ Improve
+ AnsiColorTerminalAppender to support marking colors as Light
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-232'>LOG4NET-232</a>] - Use
+ ReaderWriterLockSlim instead of ReaderWriterLock.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-259'>LOG4NET-259</a>] - Log4Net does
+ not
+ create a new tab in Chainsaw
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-283'>LOG4NET-283</a>] -
+ OnlyOnceErrorHandler is not subclass-friendly
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-292'>LOG4NET-292</a>] - Managed
+ ColoredConsoleAppender for .NET2/Mono.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-315'>LOG4NET-315</a>] - SmtpAppender
+ -
+ Add support for ignoring certificate errors
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-316'>LOG4NET-316</a>] - Provide a
+ Layout
+ Pattern that is re-evaluated on each use
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-318'>LOG4NET-318</a>] - log4net
+ doesn't
+ pass verification
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-334'>LOG4NET-334</a>] - Appender
+ Faill
+ over
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-354'>LOG4NET-354</a>] - E-mail
+ encoding
+ configuration setting for SmtpAppender
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-362'>LOG4NET-362</a>] - [PATCH]
+ SystemInfo.AssemblyLocationInfo throws unhandled ArgumentException "Absolute path
+ required"
+ when exe is started via UNC path
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-386'>LOG4NET-386</a>] - Can't
+ access
+ ThreadContext properties
+ </li>
+ </ul>
+ </section>
+
+ <section id="1.2.12-new" name="New Features">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-290'>LOG4NET-290</a>] - Add
+ Lambda-based
+ ILog-Extensions (embedded log.IsEnabled)
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-342'>LOG4NET-342</a>] - Add a way to
+ prevent silent failure
+ </li>
+ </ul>
+ </section>
+ </section>
+
+ <section id="1.2.11" name="1.2.11">
+ <p>
+ log4net 1.2.11 is not only a bugfix release, it also
+ adds support for Microsoft® .NET 4.0 as well as the client profiles
+ of .NET 3.5 and .NET 4.0.
+ </p>
+
+ <p>
+ Starting with this release log4net uses a new strong
+ name key but we also provide a binary distribution using
+ the "old" strong name key of log4net 1.2.10 and earlier.
+ See <a href="faq.html#two-snks">the FAQ</a> for details.
+ </p>
+
+ <p>
+ The binary distributions no longer contain assemblies
+ built for the Compact Framework 1.0 or the Shared Source
+ CLI - you can build those yourself using the source
+ distribution.
+ </p>
+
+ <section id="1.2.11-breaking" name="Breaking Changes">
+ <p>
+ The signature of
+ <code>ILoggerFactory.CreateLogger</code>
+ has changed.
+ </p>
+ </section>
+
+ <section id="1.2.11-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-76'>LOG4NET-76</a>] -
+ TextWriterAdapter
+ is not thread safe
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-79'>LOG4NET-79</a>] -
+ SecurityException
+ thrown in LogicalThreadContextProperties GetProperties
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-81'>LOG4NET-81</a>] -
+ LoggerRepositorySkeleton's OnConfigurationChanged method always raises its event with
+ EventArgs.Empty instead of passing through its EventArgs parameter.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-93'>LOG4NET-93</a>] - Typos for node
+ name in tutorial, excess quote, invalid XML
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-94'>LOG4NET-94</a>] - Incorrect
+ config
+ file for ..\examples\net\1.0\Tutorials\ConsoleApp
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-95'>LOG4NET-95</a>] -
+ Level.CompareTo()
+ may result a wrong Value -> sorting of Levels does not work
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-113'>LOG4NET-113</a>] -
+ SystemInfo.GetTypeFromString() raises NotSupportedException
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-123'>LOG4NET-123</a>] -
+ EnvironmentPatternConverter does not expand User or System level environment variables under
+ Windows
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-126'>LOG4NET-126</a>] - Links on the
+ log4net Examples page do not work, including the overview link explaining why the other
+ links do
+ not work
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-128'>LOG4NET-128</a>] - Either
+ documentation is incorrect or a bug in SmtpAppender
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-129'>LOG4NET-129</a>] -
+ EventLogAppender
+ EventID parsing does not handle Active Properties properly
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-135'>LOG4NET-135</a>] - Bad example
+ code
+ in documentation
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-137'>LOG4NET-137</a>] -
+ log4net.Filter.LevelMatchFilter does not work anymore
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-143'>LOG4NET-143</a>] - Invalid
+ Repository Config Uri composition from "log4net.Config" application setting
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-146'>LOG4NET-146</a>] -
+ System.NullReferenceException on FindAndRender object
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-158'>LOG4NET-158</a>] -
+ XMLConfigurator.ConfigureAndWatch() leaks resources if called multiple times
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-167'>LOG4NET-167</a>] -
+ ArrayOutOfBounds
+ Exception in MemoryAppender.getEvents()
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-212'>LOG4NET-212</a>] - Threading
+ bug in
+ the PatternConverter.cs
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-214'>LOG4NET-214</a>] -
+ EventLogAppender
+ should also use config file to set EventId
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-215'>LOG4NET-215</a>] - Exception on
+ Convert for return %class{1} name
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-229'>LOG4NET-229</a>] - Japanese
+ characters get garbled with log4net.Layout.XmlLayoutSchemaLog4j
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-241'>LOG4NET-241</a>] - Issue
+ tracking
+ page does not link to project
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-242'>LOG4NET-242</a>] - Download
+ page
+ does not have link to KEYS file
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-243'>LOG4NET-243</a>] - broken link
+ on
+ http://logging.apache.org/log4net/release/example-apps.html
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-244'>LOG4NET-244</a>] -
+ SmtpAppender.To
+ Property has incorrect delimiter
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-257'>LOG4NET-257</a>] - Visual
+ Studio
+ 2010 .NET 4.0 Application does not copy log4net lib to bin directory
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-265'>LOG4NET-265</a>] -
+ RemoteFileAppender Tests fail on Windows 7
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-274'>LOG4NET-274</a>] - log4net
+ doesn't
+ log when running a .Net 4.0 Windows application built in Release mode
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-297'>LOG4NET-297</a>] -
+ AppenderSkeleton.RequiresLayout docs and implementation don't match
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-300'>LOG4NET-300</a>] - FilterTest
+ doesn't
+ compile for .Net 2.0
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-301'>LOG4NET-301</a>] - Unit tests
+ fail
+ on a clean checkout on .NET 2.0 using NAnt
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-310'>LOG4NET-310</a>] -
+ EventLogAppender's
+ ActivateOptions throws SecurityException on Vista/Win2k3 and later when not run as
+ administrator
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-311'>LOG4NET-311</a>] - MinimalLock
+ and
+ AppendToFile=false don't work together in trunk's FileAppender
+ </li>
+ </ul>
+ </section>
+
+ <section id="1.2.11-enh" name="Improvements">
+ <ul>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-31'>LOG4NET-31</a>] - Allow user to
+ pass
+ in additional parameters to <converter> node via some kind of <property> tag
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-38'>LOG4NET-38</a>] -
+ EventLogAppender:
+ Add support for setting the Category on Event Log messages.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-66'>LOG4NET-66</a>] -
+ PreserveFileExtension with StaticFileName
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-77'>LOG4NET-77</a>] - A small
+ improvement of log4net.Layout.Pattern.ExceptionPatternConverter - added 'Option'
+ propery
+ support
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-88'>LOG4NET-88</a>] - support .NET
+ 2.0
+ connectionStrings configuration section
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-96'>LOG4NET-96</a>] - Expose the
+ Message, Exception, and ErrorCode properties of OnlyOnceErrorHandler.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-97'>LOG4NET-97</a>] - Make Hierarchy's
+ ILoggerFactory aware of the repository's LevelMap
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-98'>LOG4NET-98</a>] - Update header
+ comment in files to be compliant with new Apache header requirements:
+ http://www.apache.org/legal/src-headers.html for 11/1/2006 deadline
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-100'>LOG4NET-100</a>] -
+ IPAddressConverter improvement for .NET 2 or .NET 3
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-106'>LOG4NET-106</a>] -
+ TraceAppender :
+ Add switch to disable using logger name as trace category
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-112'>LOG4NET-112</a>] - Add support
+ to
+ the UdpAppender for IP v6 remote addresses
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-131'>LOG4NET-131</a>] - Add Cc and
+ Bcc
+ support to SmtpAppender
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-141'>LOG4NET-141</a>] - Add
+ CreateConnection method to AdoNetAppender to allow subclasses to have control of
+ IDbConnection.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-153'>LOG4NET-153</a>] - Make it
+ easier
+ to configure multiple appenders in code using BasicConfigurator
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-157'>LOG4NET-157</a>] - FAQ for
+ getting
+ the fully-qualified name of a class
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-164'>LOG4NET-164</a>] - using a
+ named
+ mutex for file appenders
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-170'>LOG4NET-170</a>] -
+ Documentation
+ improvement re: fixing and active properties
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-246'>LOG4NET-246</a>] - Make it
+ possible
+ to choose whether or not to watch configuration files specified using the "log4net.Config"
+ appsetting key
+ </li>
+ </ul>
+
+ </section>
+ <section id="1.2.11-new" name="New Features">
+ <ul>
+ <li>
+ The various static <code>Configure</code> methods of the <code>Configurator</code> classes
+ now
+ return collections of configuration messages rather than <code>void</code>.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-59'>LOG4NET-59</a>] - add the
+ ability to
+ roll files based on universal time (UTC).
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-64'>LOG4NET-64</a>] - add the
+ ability to
+ preserve the log file name extension when rolling the log file.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-87'>LOG4NET-87</a>] - Support
+ ASP.Net
+ related PatternConverters to allow items from the HttpContext.Current.Session, Cache,
+ Request,
+ etc. to be captured.
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-92'>LOG4NET-92</a>] - Build for
+ Compact Framework 2.0
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-107'>LOG4NET-107</a>] - Added
+ ExceptionEvaluator
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-115'>LOG4NET-115</a>] - Expand
+ UserAppDataPath in filename
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-116'>LOG4NET-116</a>] - allow
+ smtp
+ to ssl authenticate and with certificates.
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-154'>LOG4NET-154</a>] - Add a
+ StackTracePatternConverter to display method calls leading up to log message
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-155'>LOG4NET-155</a>] - Add
+ TimeEvaluator
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-168'>LOG4NET-168</a>] - New
+ property
+ ReplyTo address for the SmtpAppender required
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-176'>LOG4NET-176</a>] -
+ Buildable
+ with VS 2008 and .NET FW 3.5
+ </li>
+ <li>
+ [<a href='https://issues.apache.org/jira/browse/LOG4NET-233'>LOG4NET-233</a>] - Support
+ .NET
+ 4.0 including Client Profile
+ </li>
+ </li>
+ </ul>
+ </section>
+
+ </section>
+
+ <section id="1.2.10" name="1.2.10">
+
+ <section id="1.2.10-bug" name="Bug Fixes">
+ <ul>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-21'>LOG4NET-21</a>] -
+ RemotingAppender
+ fails once NDC becomes empty
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-22'>LOG4NET-22</a>] - XmlLayout
+ allows
+ output of invalid control characters
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-23'>LOG4NET-23</a>] -
+ example-apps.html
+ links are off by one folder level
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-25'>LOG4NET-25</a>] -
+ RollingFileAppender
+ can fail if RollOverIfDateBoundaryCrossing required
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-28'>LOG4NET-28</a>] - AdoNetAppender
+ does
+ not support inserting NULL into columns
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-29'>LOG4NET-29</a>] -
+ LevelMatchFilter
+ should return Neutral when no match is found
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-32'>LOG4NET-32</a>] - AdoNetAppender
+ losing first entry
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-35'>LOG4NET-35</a>] - Exception
+ rendering
+ ThreadContextStack if null value pushed into stack
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-36'>LOG4NET-36</a>] -
+ System.Diagnostics.Trace may throw exception if AppDomain does not have config file
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-40'>LOG4NET-40</a>] -
+ RollingFileAppender
+ does not limit files to MaxSizeRollBackups when CountDirection is 1
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-41'>LOG4NET-41</a>] -
+ RollingFileAppender
+ roll over date fail
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-42'>LOG4NET-42</a>] - Serialised
+ LoggingEvent does not preserve the Fix flags
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-43'>LOG4NET-43</a>] - Specifying an
+ empty
+ string as a property in the config file results in an error
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-44'>LOG4NET-44</a>] - XmlLayout emits
+ all
+ properties under a node named global-properties, rather than just properties.
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-49'>LOG4NET-49</a>] -
+ CountingQuietTextWriter does not count strings written with WriteLine
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-50'>LOG4NET-50</a>] -
+ Process.StartTime
+ hangs on some systems
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-60'>LOG4NET-60</a>] - Bug in
+ RollingFileAppender.cs causing failure to timely roll files on monthly interval
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-63'>LOG4NET-63</a>] - 1.2.9.0
+ Documentation typos
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-65'>LOG4NET-65</a>] - Unhandled
+ SecurityException exception for FileIOPermission while loading configuration file
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-67'>LOG4NET-67</a>] - CVE-2006-0743
+ Security vulnerability in LocalSyslogAppender
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-69'>LOG4NET-69</a>] - Exception
+ thrown
+ when *Format methods are given a malformed format string
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-70'>LOG4NET-70</a>] - CoreDll.dll
+ referenced with different capitalisation
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-73'>LOG4NET-73</a>] -
+ ADONetAppender.ActivateOptions() leaks database connection when called multiple times
+ </li>
+ </ul>
+ </section>
+
+ <section id="1.2.10-new" name="New Features">
+ <ul>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-11'>LOG4NET-11</a>] - Add Flush
+ command
+ to API
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-24'>LOG4NET-24</a>] - Programmatic
+ flush
+ of BufferingAppenderSkeleton buffer
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-37'>LOG4NET-37</a>] - Allow the
+ RepositorySelector type to be specified using the AppSettings config
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-46'>LOG4NET-46</a>] - Support
+ appenders
+ that can output multiple events efficiently
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-51'>LOG4NET-51</a>] - WmiAppender
+ </li>
+ </ul>
+ </section>
+
+ <section id="1.2.10-enh" name="Improvements">
+ <ul>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-3'>LOG4NET-3</a>] - Support per event
+ patterns in FileAppender File name
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-13'>LOG4NET-13</a>] - Allow
+ SMTPAppender
+ to have replaceable parameters in Subject
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-15'>LOG4NET-15</a>] - Email high
+ "importance" priority setting with SmtpAppender
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-17'>LOG4NET-17</a>] - Line-wrapping
+ Appender Layouts
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-33'>LOG4NET-33</a>] - Ability to use
+ global property to point to log4net configuration file
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-34'>LOG4NET-34</a>] - Allow xml
+ config
+ values to be set via XmlNodeType.CDATA or XmlNodeType.Text rather than just value="foo"
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-45'>LOG4NET-45</a>] - PluginAttribute
+ does not allow plugin type to be specified as a Type, only as a string
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-52'>LOG4NET-52</a>] - Allow XML
+ configurator to set properties of type Object
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-53'>LOG4NET-53</a>] - Allow
+ repository
+ properties to be set in the config file
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-56'>LOG4NET-56</a>] - Support
+ rendering
+ IEnumerator objects as well as ICollections
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-58'>LOG4NET-58</a>] - Support clean
+ build
+ on .NET 2.0
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-72'>LOG4NET-72</a>] - Performance of
+ ILog.xxxFormat methods
+ </li>
+ <li>
+ [<a href='http://issues.apache.org/jira/browse/LOG4NET-74'>LOG4NET-74</a>] - Change
+ MemoryAppender member variables to protected
+ </li>
+ </ul>
+ </section>
+
+ </section>
+
+ <section id="1.2.9" name="1.2.9 Beta">
+
+ <section id="1.2.9-breaking" name="Breaking Changes">
+ <h3>Renamed namespaces</h3>
+ <p>
+ Renamed namespace <span class="code">log4net.spi</span> to <span class="code">
+ log4net.Core
+ </span>.
+ Renamed namespace <span class="code">log4net.helpers</span> to <span class="code">
+ log4net.Util
+ </span>.
+ </p>
+ <h3>Renamed config classes and attributes</h3>
+ <p>
+ In the <span class="code">log4net.Config</span> namespace the <span class="code">
+ DOMConfigurator
+ </span>,
+ <span class="code">DOMConfiguratorAttribute</span>, <span class="code">DomainAttribute</span>,
+ and <span class="code">AliasDomainAttribute</span> have been marked as obsolete. These types are
+ still available and functional in this release.
+ </p>
+ <p>
+ The <span class="code">XmlConfigurator</span> and
+ <span class="code">XmlConfiguratorAttribute</span>
+ types replace <span class="code">DOMConfigurator</span> and
+ <span class="code">DOMConfiguratorAttribute</span>. The
+ <span class="code">RepositoryAttribute</span>
+ and <span class="code">AliasRepositoryAttribute</span> types replace
+ <span class="code">DomainAttribute</span>
+ and <span class="code">AliasDomainAttribute</span>.
+ </p>
+ <h3>Fixed pascal casing of type names</h3>
+ <p>
+ Renamed <span class="code">AdoNetAppender</span>, <span class="code">AspNetTraceAppender</span>,
+ <span class="code">SmtpAppender</span>, <span class="code">Iso8601DateFormatter</span>,
+ <span class="code">MdcFilter</span>, and <span class="code">NdcFilter</span>.
+ Note that the config file type resolver is case insensitive so this is only a breaking change
+ for code that programmatically creates a type that has been renamed.
+ </p>
+ <h3>
+ Layouts changed to stream their output to a
+ <span class="code">TextWriter</span>
+ </h3>
+ <p>
+ Layouts have been changed to format their output to a
+ <span class="code">TextWriter</span>
+ rather than return a string. This increases performance and reduces temporary object creation.
+ </p>
+ <h3>C style string escapes no longer supported by config parser</h3>
+ <p>
+ The XML config parser no longer supports decoding C style escape sequences in strings.
+ Previously sequences like <span class="code">\n</span> and
+ <span class="code">\\</span>
+ where decoded. Instead use the appropriate XML encodings as required.
+ </p>
+ </section>
+
+ <section id="1.2.9-new" name="New Features">
+ <h3>New CLI build</h3>
+ <p>
+ A new log4net assembly is built that targets all CLI 1.0 compatible runtimes.
+ This build is essentially a common subset of the Mono 1.0 and .NET 1.0 builds.
+ It is built using the MS .NET 1.0 compiler and libraries but does not use any
+ platform specific APIs.
+ </p>
+ <p>
+ This build is only available in release configuration and can be found at
+ <span class="code">bin\cli\1.0\release</span>.
+ </p>
+ <h3>Logging contexts</h3>
+ <p>
+ Logging contexts can be used to record contextual data that is relevant to the current
+ process. Logging contexts are both an extension of the concepts embodied in the
+ <span class="code">MDC</span>
+ and <span class="code">NDC</span> and a replacement for
+ them. The <span class="code">MDC</span> and <span class="code">NDC</span> have been
+ reimplemented to use the <span class="code">ThreadContext</span> as storage.
+ </p>
+ <p>
+ The logging contexts provide a single unified view that cuts across different
+ scopes within an application.
+ The contexts are layered in the following order of narrowing scope:
+ <span class="code">GlobalContext</span>, <span class="code">ThreadContext</span>,
+ <span class="code">LogicalThreadContext</span>, and <span class="code">LoggingEvent</span>.
+ Context values specified in a narrower scope hide the matching value in a wider scope.
+ </p>
+ <h3>
+ <span class="code">PatternLayout</span>
+ customization and long pattern names
+ </h3>
+ <p>
+ The <span class="code">PatternLayout</span> now supports long pattern names.
+ These pattern names are significantly more readable than the single character patterns.
+ </p>
+ <p>
+ The <span class="code">PatternLayout</span> now supports custom patterns. New patterns
+ can be defined in the config file:
+ </p>
+ <div class="syntax">
+ <pre class="code">
+ <layout type="log4net.Layout.PatternLayout">
+
+ <converter>
+ <name value="myConverter" />
+ <type value="TestApp.MyPatternConverter, TestApp" />
+ </converter>
+
+ <conversionPattern value="%-5level %logger - %myConverter - %message%newline" />
+ </layout>
+ </pre>
+ </div>
+ <p>
+ The above config defines a custom pattern called
+ <span class="code">myConverter</span>
+ which is bound to the
+ <span class="code">TestApp.MyPatternConverter, TestApp</span>
+ type. This type must extend the
+ <span class="code">log4net.Util.PatternConverter</span>
+ base class. The custom pattern can then be used in the pattern string.
+ </p>
+ <p>
+ For full details see the SDK Reference entry: <a
+ href="sdk/html/T_log4net_Layout_PatternLayout.htm">
+ log4net.Layout.PatternLayout
+ </a>.
+ </p>
+ <h3>
+ <span class="code">PatternString</span>
+ for pattern based configuration
+ </h3>
+ <p>
+ A new pattern based type, <span class="code">PatternString</span>, can be used in
+ the config file to set string properties using a pattern syntax. For example the
+ File property of the FileAppender could be set as follows:
+ </p>
+ <div class="syntax">
+ <pre class="code">
+ <file type="log4net.Util.PatternString">
+
+ <converter>
+ <name value="folder" />
+ <type value="TestApp.SpecialFolderPatternConverter,TestApp" />
+ </converter>
+
+ <conversionPattern value="%folder{LocalApplicationData}\log-file.txt" />
+ </file>
+ </pre>
+ </div>
+ <p>
+ The code for the
+ <span class="code">SpecialFolderPatternConverter</span>
+ is as follows:
+ </p>
+ <div class="syntax">
+ <pre class="code">
+ public class SpecialFolderPatternConverter : log4net.Util.PatternConverter
+ {
+ override protected void Convert(System.IO.TextWriter writer, object state)
+ {
+ Environment.SpecialFolder specialFolder =
+ (Environment.SpecialFolder)Enum.Parse(typeof(Environment.SpecialFolder), base.Option, true);
+
+ writer.Write(Environment.GetFolderPath(specialFolder));
+ }
+ }
+ </pre>
+ </div>
+ <p>
+ For full details see the SDK Reference entry: <a
+ href="sdk/html/T_log4net_Util_PatternString_htm">
+ log4net.Util.PatternString
+ </a>.
+ </p>
+ <h3>Loading configuration from a URI</h3>
+ <p>
+ The <span class="code">XmlConfigurator</span> methods now support loading the
+ configuration data from a URI. Config can be loaded from any URI supported by the
+ <span class="code">System.Net.WebRequest</span>
+ class.
+ </p>
+ <h3>Support for No-Touch deployment</h3>
+ <p>
+ Log4net supports configuring No-Touch deployment applications using the
+ <span class="code">XmlConfiguratorAttribute</span>. If a relative config file
+ or extension is specified then this is resolved relative to the deployment
+ URI.
+ </p>
+ <h3>Config file parser enhancements</h3>
+ <p>
+ The config file parser has been enhanced to support specifying the property subtype, or
+ intermediate
+ type,
+ directly on the property element, for example:
+ </p>
+ <div class="syntax">
+ <pre class="code">
+ <layout type="log4net.Layout.PatternLayout" value="%message%newline"
+ />
+ </pre>
+ </div>
+ <p>
+ Implicit conversion will be attempted between the value string and the type specified,
+ and then again between the type and the target property type.
+ </p>
+ <h3>.NET string formatting syntax</h3>
+ <p>
+ Added .NET <span class="code">String.Format</span> style formatting syntax methods to
+ the <span class="code">ILog</span> interface. The new methods are:
+ <span class="code">DebugFormat</span>, <span class="code">InfoFormat</span>,
+ <span class="code">WarnFormat</span>,
+ <span class="code">ErrorFormat</span>
+ and <span class="code">FatalFormat</span>.
+ </p>
+ <h3>Customizable levels</h3>
+ <p>
+ Levels are defined by the repository <span class="code">LevelMap</span>. The defined
+ levels, the relative ordering of levels and level display names can be configured on
+ a per-repository basis.
+ </p>
+ <h3>Per-appender security contexts</h3>
+ <p>
+ Appenders that interact with controlled platform resources, e.g. files, can be
+ configured to use a separate security context when accessing these resources.
+ The calling thread may not have appropriate privileges to access the resource a
+ custom <span class="code">SecurityContext</span> can be used to elevate the
+ privileges of the appender. The
+ <span class="code">WindowsSecurityContext</span>
+ is used to specify alternative credentials on the Windows platform.
+ </p>
+ <h3>Added new appenders</h3>
+ <dl>
+ <dt>
+ <span class="code">AnsiColorTerminalAppender</span>
+ </dt>
+ <dd>
+ <p>
+ The <span class="code">AnsiColorTerminalAppender</span> writes events to
+ the application's ANSI terminal window. It can be configured to specify
+ the text and background colors for different level events. Note that Console
+ applications running on Windows do not have an ANSI terminal window and
+ should use the <span class="code">ColoredConsoleAppender</span> instead.
+ </p>
+ </dd>
+ <dt>
+ <span class="code">LocalSyslogAppender</span>
+ </dt>
+ <dd>
+ <p>
+ Logs events to a local syslog service. This appender uses the POSIX libc syslog
+ library functions. If these functions are not available on the local system then
+ this appender will not work!
+ </p>
+ </dd>
+ <dt>
+ <span class="code">RemoteSyslogAppender</span>
+ </dt>
+ <dd>
+ <p>
+ The <span class="code">RemoteSyslogAppender</span> uses the BSD syslog protocol to
+ log to a syslog daemon. The syslogd listens for for messages on UDP port 514.
+ </p>
+ </dd>
+ <dt>
+ <span class="code">TelnetAppender</span>
+ </dt>
+ <dd>
+ <p>
+ The <span class="code">TelnetAppender</span> accepts socket connections and streams
+ logging messages back to the client. The output is provided in a telnet-friendly way
+ so that a log can be monitored over a TCP/IP socket.
+ This allows simple remote monitoring of application logging.
+ </p>
+ </dd>
+ </dl>
+ <h3>
+ Added new <span class="code">LoggerMatchFilter</span> filter
+ </h3>
+ <p>
+ Added <span class="code">LoggerMatchFilter</span> which matches a string against
+ the event's logger name.
+ </p>
+ <h3>
+ Pluggable file locking models for the
+ <span class="code">FileAppender</span>
+ </h3>
+ <p>
+ The <span class="code">FileAppender</span> (and by extension the
+ <span class="code">RollingFileAppender</span>) now support pluggable file
+ locking models. The default model, <span class="code">ExclusiveLock</span>,
+ maintains the current exclusive file locking behavior. An alternative
+ model, <span class="code">MinimalLock</span>, can be used to support writing to
+ a single output file from multiple processes.
+ </p>
+ <p>
+ For full details see the SDK Reference entry: <a
+ href="sdk/html/T_log4net_Appender_FileAppender_LockingModel.htm">
+ log4net.Appender.FileAppender.LockingModel
+ </a>.
+ </p>
+ <h3>
+ <span class="code">RollingFileAppender</span>
+ roll once
+ </h3>
+ <p>
+ The <span class="code">RollingFileAppender</span> now supports a new
+ rolling style, <span class="code">Once</span>. In this mode the appender
+ will roll the file once per run.
+ </p>
+ <h3>
+ <span class="code">SmtpAppender</span>
+ authentication
+ </h3>
+ <p>
+ On the .NET 1.1 platform only, the <span class="code">SmtpAppender</span> supports
+ authenticating
+ against the mail server using either username and password or integrated NTLM authentication.
+ </p>
+ <h3>
+ <span class="code">AdoNetAppender</span>
+ ReconnectOnError
+ </h3>
+ <p>
+ Added new configuration property to <span class="code">AdoNetAppender</span>.
+ Setting <span class="code">ReconnectOnError</span> to
+ <span class="code">true</span>
+ will force the appender to attempt to reconnect to the database if the connection
+ is lost.
+ </p>
+ <h3>
+ <span class="code">UdpAppender</span>
+ hostname support
+ </h3>
+ <p>
+ The <span class="code">UdpAppender</span> config property
+ <span class="code">RemoteAddress</span>
+ can now be specified as a DNS hostname string. The hostname is resolved to an IP address.
+ </p>
+ </section>
+
+ <section id="1.2.9-other" name="Other Changes">
+ <h3>FxCop compliance</h3>
+ <p>
+ Updates to bring the internal code in line with the current FxCop rules.
+ </p>
+ <h3>Separate NUnit tests</h3>
+ <p>
+ Moved the NUnit tests into a separate project, <span class="code">log4net.Tests</span>.
+ </p>
+ <h3>Bug Fixes</h3>
+ <dl>
+ <dt>
+ <span class="code">RemotingAppender</span>
+ </dt>
+ <dd>
+ <p>
+ Sends events from a <span class="code">ThreadPool</span> thread
+ rather than the calling thread to prevent transfer,
+ and potential loss, of the <span class="code">CallContext</span>.
+ </p>
+ </dd>
+ <dt>
+ <span class="code">RollingFileAppender</span>
+ </dt>
+ <dd>
+ <p>
+ Fixed date rolling period detection for non UTC timezones.
+ </p>
+ </dd>
+ <dt>
+ <span class="code">ColoredConsoleAppender</span>
+ </dt>
+ <dd>
+ <p>
+ Updated to support writing more than 30,000 chars in a single message.
+ Fixed background color overspill if the console window needs to
+ scroll the contents.
+ </p>
+ </dd>
+ </dl>
+ </section>
+
+ </section>
+
+ <section id="1.2.0b8" name="1.2.0 Beta 8">
+ <h3>
+ Changed assembly name to
+ <span class="code">log4net</span>
+ </h3>
+ <p>
+ The build output is now
+ <span class="code">log4net.dll</span>
+ for all frameworks. This is a breaking change.
+ </p>
+ <p>
+ To resolve cross platform and cross version issues we have
+ changed the log4net assembly to use a common name for all
+ frameworks. The assembly friendly name is now <span class="code">log4net</span>.
+ The builds for each framework can now be differentiated
+ by the assembly title. This includes the name of the framework
+ that the assembly was built on.
+ </p>
+ <h3>Combined Release and ReleaseStrong builds</h3>
+ <p>
+ The Release and ReleaseStrong builds have been consolidated into
+ a single build called Release. This Release build is strongly named.
+ </p>
+ <h3>New Appender: ColoredConsoleAppender</h3>
+ <p>
+ The <span class="code">ColoredConsoleAppender</span> writes events to the
+ application's console. It can be configured to specify the text and background
+ colors for different level events.
+ </p>
+ <h3>New Appender: SmtpPickupDirAppender</h3>
+ <p>
+ The <span class="code">SmtpPickupDirAppender</span> generates SMTP compliant
+ messages and writes them to a local directory. These files can then be read
+ by an SMTP agent (e.g. the IIS SMTP Agent) and delivered.
+ </p>
+ <h3>New Layout: XmlLayoutSchemaLog4j</h3>
+ <p>
+ This new layout formats the logging events as XML which complies with
+ the Apache log4j™ event dtd. This can be used to transfer log event from log4net
+ to log4j. Currently the only appender that can communicate directly with
+ log4j is the <span class="code">UdpAppender</span>.
+ </p>
+ <h3>New PatternLayout conversion characters</h3>
+ <p>
+ Added support for capturing the current thread principal name and the
+ app domain friendly name for each logging event.
+ </p>
+ <dl>
+ <dt>%a</dt>
+ <dd>
+ Used to output the friendly name of the AppDomain where the
+ logging event was generated.
+ </dd>
+ <dt>%u</dt>
+ <dd>
+ Used to output the user name for the currently active user
+ (<span class="code">Principal.Identity.Name</span>).
+ </dd>
+ </dl>
+ <h3>Types specified in the config file are now loaded ignoring case</h3>
+ <p>
+ All types specified in the configuration files are now loaded
+ using a case insensitive method.
+ </p>
+ <h3>Fine grained fixing for buffered events</h3>
+ <p>
+ The <span class="code">LoggingEvent</span> now supports fine grained
+ fixing of data that needs to be accessed outside the append context,
+ e.g. when an event is buffered. The new
+ <span class="code">Fix</span>
+ property takes a combination of the
+ <span class="code">FixFlags</span>
+ enumeration values.
+ </p>
+ <h3>Code updated inline with FxCop 1.21</h3>
+ <p>
+ In line with the FxCop 1.21 guidelines:
+ Sealed utility classes. Added serialization security demand to GetObjectData.
+ Renamed parameters.
+ </p>
+ <h3>EventLogAppender 32K Limit</h3>
+ <p>
+ There is a limit of 32K characters in an EventLog message. Added a
+ check that only logs the first 32000 characters from the rendered
+ message.
+ </p>
+ </section>
+
+ <section id="1.2.0b7" name="1.2.0 Beta 7">
+ <h3>Updated to support the Microsoft .NET Framework 1.1 Final</h3>
+ <p>
+ Updated to support the Microsoft .NET Framework 1.1 Final Beta (1.1.4322).
+ </p>
+ <h3>Features document</h3>
+ <p>
+ Added a new document that covers the main features of log4net.
+ See the
+ <a href="features.html">features</a>
+ document for more information.
+ </p>
+ <h3>Hierarchy disabled until it is configured</h3>
+ <p>
+ The Hierarchy is now disabled until it has been configured.
+ All messages logged to the Hierarchy before it has been
+ configured will be ignored without an error message being
+ written to the console.
+ </p>
+ <p>
+ If you are configuring log4net programmatically (i.e. not using
+ one of the built-in configurators) you must set the
+ <span class="code">ILoggerRepository.Configured</span>
+ property
+ to <span class="code">true</span> once you have configured
+ the repository.
+ </p>
+ <p>
+ The no appenders defined for a logger message will no longer be
+ displayed on the console by default. This message will only be
+ displayed if internal debugging is enabled.
+ </p>
+ <h3>New examples in VisualBasic.NET, JScript and Managed C++</h3>
+ <p>
+ New examples in VisualBasic.NET, JScript and Managed C++.
+ TODO Link to document about examples.
+ </p>
+ <h3>Code and Documentation Updates</h3>
+ <p>
+ Code fixes. Documentation and manual updates.
+ See the ChangeLog for more information.
+ </p>
+ <h3>Added document with example appender configurations</h3>
+ <p>
+ See the
+ <a href="config-examples.html">Example Appender Configuration</a>
+ document for more information.
+ </p>
+ </section>
+
+ <section id="1.2.0b6" name="1.2.0 Beta 6">
+ <h3>Added support for multiple frameworks</h3>
+ <p>
+ log4net 1.2.0 beta 6 adds support for the the following frameworks:
+ </p>
+ <div class="table">
+ <table cellspacing="0">
+ <colgroup>
+ <col style="text-align: left;"/>
+ </colgroup>
+ <tr>
+ <th>
+ Framework
+ </th>
+ <th>
+ Website
+ </th>
+ </tr>
+ <tr style="vertical-align: top;">
+ <td>Microsoft .NET Framework 1.1 Final Beta (1.1.4322)</td>
+ <td>
+ <a href="http://msdn.microsoft.com/net">http://msdn.microsoft.com/net</a>
+ </td>
+ </tr>
+ <tr style="vertical-align: top;">
+ <td>Microsoft .NET Compact Framework 1.0 (1.0.5000)</td>
+ <td>
+ <a href="http://msdn.microsoft.com/vstudio/device/compactfx.asp">
+ http://msdn.microsoft.com/vstudio/device/compactfx.asp
+ </a>
+ </td>
+ </tr>
+ <tr style="vertical-align: top;">
+ <td>Mono 0.23</td>
+ <td>
+ <a href="http://www.go-mono.org">http://www.go-mono.org</a>
+ </td>
+ </tr>
+ <tr style="vertical-align: top;">
+ <td>Microsoft Shared Source CLI 1.0</td>
+ <td>
+ <a href="http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp">
+ http://msdn.microsoft.com/library/en-us/dndotnet/html/mssharsourcecli.asp
+ </a>
+ </td>
+ </tr>
+ </table>
+ </div>
+ <br/>
+ <p>
+ Not all frameworks are created equal and some features have been excluded from
+ some of the builds. See the <a href="framework-support.html">Framework Support</a> document for more
+ information.
+ </p>
+ <h3>New build system using NAnt</h3>
+ <p>
+ The new build system allows log4net to be built for all supported frameworks and
+ in all build configurations in one go.
+ </p>
+ <h3>New source code & distribution layout</h3>
+ <p>
+ The source code & distribution layout has been updated to support the new
+ build environment and multiple target frameworks.
+ </p>
+ <h3>Removed DomainAttribute.UseDefaultDomain property</h3>
+ <p>
+ Updated default behavior of <span class="code">DefaultRepositorySelector</span>. Assemblies
+ are now by default placed into the default domain. To specify another domain,
+ the <span class="code">DomainAttribute</span> must be used. This is the opposite behavior
+ to what was previously available. If you were previously specifying the
+ <span class="code">DomainAttribute.UseDefaultDomain</span>
+ property then you should remove it, and if the default behavior is now
+ sufficient, you do not need to specify the <span class="code">DomainAttribute</span> at all.
+ </p>
+ <h3>Updated configuration file parser</h3>
+ <p>
+ Updated config file parser to use the element name as the property to set. Also
+ removed <span class="code"><object></span> tag, the type attribute can now be
+ specified on the property element directly.
+ </p>
+ <p>
+ For example:
+ </p>
+ <div class="syntax">
+ <pre class="code">
+ <appender>
+ <param name="Evaluator">
+ <object type="log4net.spi.LevelEvaluator">
+ <constructor>
+ <param type="log4net.spi.Level" value="DEBUG"/>
+ </constructor>
+ </object>
+ </param>
+ </appender>
+ </pre>
+ </div>
+ <p>
+ becomes:
+ </p>
+ <div class="syntax">
+ <pre class="code">
+ <appender>
+ <evaluator type="log4net.spi.LevelEvaluator">
+ <threshold value="DEBUG"/>
+ </evaluator>
+ </appender>
+ </pre>
+ </div>
+ <h3>Support for event ID</h3>
+ <p>
+ The <span class="code">EventLogAppender</span> now supports setting the event ID in the
+ event log, this is taken from the <span class="code">EventID</span> property from the per
+ event <span class="code">Properties</span> map on the <span class="code">LoggingEvent</span>.
+ </p>
+ <h3>Updated ADONetAppender</h3>
+ <p/>
+ <ul>
+ <li>
+ Added support for prepared statements and stored procedures
+ </li>
+ <li>
+ Added <span class="code">RawTimeStampLayout</span>to correctly convert the timestamps into
+ database date time format
+ </li>
+ <li>
+ Added <span class="code">ExceptionLayout</span> to render the exception data
+ </li>
+ </ul>
+ <p/>
+ <h3>Support for front-end extension</h3>
+ <p>
+ This allows the logging API to be wrapped or adapted for specific purposes. Two
+ extension samples are included in the distribution:
+ </p>
+ <div class="table">
+ <table cellspacing="0">
+ <colgroup>
+ <col style="width: 50%; text-align: left;"/>
+ <col style="width: 50%; text-align: left;"/>
+ </colgroup>
+ <tr>
+ <th>
+ Extension
+ </th>
+ <th>
+ Description
+ </th>
+ </tr>
+ <tr style="vertical-align: top;">
+ <td>log4net.Ext.Trace</td>
+ <td>Adds trace logging methods</td>
+ </tr>
+ <tr style="vertical-align: top;">
+ <td>log4net.Ext.EventID</td>
+ <td>Adds additional eventId parameter to all methods</td>
+ </tr>
+ </table>
+ </div>
+ <p/>
+ <h3>Added ForwardingAppender</h3>
+ <p>Forwards events to multiple sub appenders after applying filter rules.</p>
+ <h3>Added BufferingForwardingAppender</h3>
+ <p>Forward events to sub appenders after buffering them.</p>
+ <h3>Added ASPNetTraceAppender</h3>
+ <p>Logs events to the ASP.NET trace system.</p>
+ <h3>Added NetSendAppender</h3>
+ <p>Delivers logging events using the Windows Messenger service.</p>
+ <h3>Added UdpAppender</h3>
+ <p>
+ Sends logging events as connectionless UDP datagrams to a remote host or a
+ multicast group.
+ </p>
+ <h3>Removed obsolete methods</h3>
+ <h3>Lots of updates to improve our compliance with FxCop</h3>
+ <h3>Improved SDK documentation</h3>
+ </section>
+
+ <section id="1.2.0b5" name="1.2.0 Beta 5">
+ <h3>
+ Fixed Exception thrown when DOM Configurator called with a null XML
+ Element.
+ </h3>
+ <p>This occurred if the configuration file did not have a log4net section defined.</p>
+ <h3>Made level lookup case insensitive</h3>
+ <h3>Prevented the Hierarchy's Threshold level from being set to a null reference</h3>
+ </section>
+
+ <section id="1.2.0b4" name="1.2.0 Beta 4">
+ <h3>Added event specific properties to the logging event object</h3>
+ <p>
+ Appenders can add additional information to the events they are logging. The
+ <span class="code">RemotingAppender</span>
+ and the <span class="code">SMTPAppender</span> both add a 'hostname' property to the events.
+ These properties can be accessed using the <span class="code">PatternLayout</span> with the
+ %P{name} syntax.
+ </p>
+ <h3>Added a plugin framework</h3>
+ <p>
+ An <span class="code">IPlugin</span> interface can be attached to any repository.
+ </p>
+ <h3>
+ A new RemoteLoggingServerPlugin plugin acts as the server for the
+ RemotingAppender
+ </h3>
+ <h3>
+ Updated the core log4net framework to work in an environment with no
+ permissions
+ </h3>
+ <p>Specific appenders still require additional permissions to log correctly</p>
+ <h3>Added support for domain aliasing using the AliasDomainAttribute</h3>
+ <p>
+ This allows a parent assembly to take control of the logging domain for child
+ assemblies.
+ </p>
+ <h3>
+ Added events for repository creation, configuration change, configuration reset
+ and repository shutdown
+ </h3>
+ <h3>Added LevelMap to the ILoggerRepository interface</h3>
+ <p>
+ The mapping from level name to level object is now repository specific,
+ therefore each repository can have independent mappings.
+ </p>
+ <h3>Moved hierarchy specific config file parser to new DOMHierarchyConfigurator class</h3>
+ <p>
+ This is controlled by the <span class="code">Hierarchy</span> object and allows for better
+ encapsulation.
+ </p>
+ <h3>Added OnlyFixPartialEventData property to the buffered appenders</h3>
+ <p>
+ This setting causes slow settings to be ignored. This significantly improves the
+ performance of the buffered appenders.
+ </p>
+ <h3>XML entity references are supported in the XML config file.</h3>
+ <h3>Added support for expanding environment variables in <param> values</h3>
+ <p>
+ The environment variables must be specified as <span class="code">${FOO}</span> where
+ <span class="code">FOO</span>
+ is the name of the variable to expand.
+ </p>
+ <h3>Upgraded to use NUnit 2.0</h3>
+ <h3>File appenders can specify the encoding to use for the file</h3>
+ <h3>Added strong named configuration</h3>
+ </section>
+
+ <section id="1.2.0b3" name="1.2.0 Beta 3">
+ <h3>Added log4net.Ext.Trace extension</h3>
+ <p>This is a separate assembly that adds a trace level to log4net.</p>
+ <h3>
+ The default log file output directory is now the application base directory not
+ the current directory
+ </h3>
+ <h3>Added MemoryAppender</h3>
+ <p>Stores all the logging events in an in-memory buffer.</p>
+ <h3>Moved the Hierarchy implementation into a separate namespace</h3>
+ <p>
+ The <span class="code">log4net.Repository.Hierarchy</span> namespace now contains all the
+ code that is specific to the <span class="code">Hierarchy</span> implementation.
+ </p>
+ <h3>Refactored the DOMConfigurator and BasicConfigurator</h3>
+ <p>
+ The <span class="code">Hierarchy</span> specific data schema and implementation could be has
+ now been moved to the <span class="code">log4net.Repository.Hierarchy</span> namespace. The
+ bootstrap code for these configurators remains in the
+ <span class="code">log4net.Config</span>
+ namespace.
+ </p>
+ <h3>
+ Replaced the DOMConfiguratorAttribute UseExecutableDomain
+ property with UseDefaultDomain
+ </h3>
+ <p>
+ This change to the implementation of the <span class="code">DOMConfiguratorAttribute</span> should
+ allow the configuration of multiple assemblies to be accomplished more easily,
+ especially when developing web applications (ASP.NET).
+ </p>
+ <h3>A few good bug fixes!</h3>
+ </section>
+
+ <section id="1.2.0b2" name="1.2.0 Beta 2">
+ <h3>Added ADONetAppender</h3>
+ <p>Thanks to TechnologyOneCorp.com.</p>
+ <h3>Added TraceLogAssembly extensibility example</h3>
+ <h3>Lots of bug fixes</h3>
+ </section>
+
+ <section id="1.2.0b1" name="1.2.0 Beta 1">
+ <h3>Added 6 new examples</h3>
+ <h3>Split Category class into Logger and LogManager classes</h3>
+ <p>
+ The instance methods from <span class="code">Category</span> have moved to the
+ <span class="code">Logger</span>
+ class. The static methods from <span class="code">Category</span> have moved to the
+ <span class="code">LogManager</span>
+ class. The <span class="code">Category</span> class still exists but for backward
+ compatibility only. Changed interface <span class="code">ICategoryFactory</span> to
+ <span class="code">ILoggerFactory</span>
+ and the implementation class <span class="code">DefaultCategoryFactory</span> to <span class="code">
+ DefaultLoggerFactory
+ </span>.
+ </p>
+ <h3>Replaced Priority class with Level class</h3>
+ <p>
+ The <span class="code">Priority</span> class has been replaced by the <span class="code">
+ Level
+ </span> class.
+ The <span class="code">Priority</span> class still exists for backward compatibility only.
+ The <span class="code">Level</span> class implements a static pool of <span class="code">
+ Level
+ </span> objects.
+ The <span class="code">Level</span> class is sealed and serializable.
+ </p>
+ <h3>Added ILoggerRepository interface implemented by Hierarchy</h3>
+ <p>
+ The <span class="code">Hierarchy</span> class implements the <span class="code">
+ ILoggerRepository
+ </span> interface.
+ This interface is used by the <span class="code">LogManager</span> class and therefore
+ allows different implementations of <span class="code">ILoggerRepository</span> to be used.
+ </p>
+ <h3>Enhanced NUnit tests</h3>
+ <p>
+ All the NUnit tests can be run using a single TestSuite: NUnitGUI
+ log4net.LogManager+AllTests,log4net.dll.
+ </p>
+ <h3>Added support for serializing LoggingEvents</h3>
+ <p>
+ The <span class="code">LoggingEvent</span> class is serializable. All local state is
+ captured before serialization occurs. This now allows
+ <span class="code">LoggingEvent</span>
+ objects to be serialized between applications or machines.
+ </p>
+ <h3>Added RemotingAppender</h3>
+ <p>
+ Delivers <span class="code">LoggingEvents</span> to a remote interface. This can be used to
+ collect distributed logging into a single log file. There is an example
+ remoting sink that receives the logging events, see
+ <span class="code">examples\net\remoting\RemotingServer</span>
+ for details.
+ </p>
+ <h3>Added support for rendering composite objects</h3>
+ <p>
+ The <span class="code">IObjectRenderer</span> interface method <span class="code">DoRender</span> now
+ takes a <span class="code">RendererMap</span> argument. This allows the renderer to use the
+ appropriate renderer from the <span class="code">RendererMap</span> to render any nested
+ objects.
+ </p>
+ <h3>Added support for rendering exceptions</h3>
+ <p>
+ The <span class="code">DefaultRenderer</span> now has support for rendering exceptions to a
+ string. This includes nested exceptions. The <span class="code">RendererMap</span> is now
+ used to render exceptions in the <span class="code">LoggingEvent</span>. This allows the
+ rendering of specific exceptions to be enhanced by specific renderers.
+ </p>
+ <h3>Added ITriggeringEventEvaluator interface</h3>
+ <p>
+ This interface is used by <span class="code">SMTPAppender</span> and
+ <span class="code">RemotingAppender</span>
+ to determine if a <span class="code">LoggingEvent</span> meets a set of user defined
+ criteria. These appenders use the interface to determine whether or not to
+ deliver the current buffer of events to their listener. The interface is
+ implemented by the <span class="code">LevelEvaluator</span> class, which triggers above a
+ set level.
+ </p>
+ <h3>Added regex matching to the MDCFilter, NDCFilter and StringMatchFilter</h3>
+ <p>
+ The <span class="code">MDCFilter</span>, <span class="code">NDCFilter</span> and
+ <span class="code">StringMatchFilter</span>
+ can now be configured to use regex matches in addition to substring matches.
+ Set the <span class="code">RegexToMatch</span> property to use this feature.
+ </p>
+ <h3>Added XMLLayout</h3>
+ <p>
+ emits an XML element for each <span class="code">LoggingEvent</span>. This allows logging
+ events to be stored and manipulated as XML. The DTD for the XML emitted is in
+ the
+ <span class="code">log4net-events.dtd</span>
+ </p>
+ <h3>
+ Added support for <logger> and <level> elements in the
+ DOMConfigurator
+ </h3>
+ <p>
+ As the <span class="code">Category</span> and <span class="code">Priority</span> classes have been
+ replaced by the <span class="code">Logger</span> and <span class="code">Level</span> classes. The
+ <span class="code">DOMConfigurator</span>
+ has been updated to allow the <span class="code"><logger></span> and
+ <span class="code"><level></span>
+ elements to be used in place of the <span class="code"><category></span> and
+ <span class="code"><priority></span>
+ elements. The old elements are still accepted for backward compatibility.
+ </p>
+ <h3>Added Threshold property to Hierarchy</h3>
+ <p>
+ Changed <span class="code">DisableXXX()</span> methods on <span class="code">Hierarchy</span> to a
+ <span class="code">Threshold</span>
+ property.
+ </p>
+ <h3>Added support for logging domains</h3>
+ <p>
+ The <span class="code">LogManager</span> supports multiple logging domains. The
+ <span class="code">LogManager</span>
+ uses an instance of the <span class="code">IRepositorySelector</span> class to map from
+ domains to <span class="code">ILoggerRepository</span> instances. The default implementation
+ is to have a separate <span class="code">ILoggerRepository</span> for each domain. When a
+ call is made to the static methods on <span class="code">LogManager</span> the domain can be
+ specified (as a string) or the domain can be inferred automatically from the
+ calling assembly. The default behavior is for each assembly loaded into the
+ process to have its own domain and <span class="code">ILoggerRepository</span>. These can
+ each be configured separately. This allows standalone assemblies to use log4net
+ without conflicting with other modules in the process. The domain for the
+ assembly is configured using metadata attributes defined on the assembly.
+ </p>
+ <h3>DOMConfigurator can set params to arbitrary objects</h3>
+ <p>
+ Using a new <span class="code"><object></span> element, params can now be set to any
+ creatable object.
+ </p>
+ </section>
+
+ </section>
+ </body>
</document>