This is an automated email from the ASF dual-hosted git repository.
freeandnil pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
The following commit(s) were added to refs/heads/master by this push:
new f06a0bc6 fix regression from 3.0.0 (log4j:data instead of
log4j:throwable) fixes #225
f06a0bc6 is described below
commit f06a0bc66bade22556c2e5c2528d5d4f13884df5
Author: Jan Friedrich <[email protected]>
AuthorDate: Tue Feb 4 11:03:11 2025 +0100
fix regression from 3.0.0 (log4j:data instead of log4j:throwable)
fixes #225
---
.../Layout/XmlLayoutSchemaLog4jTest.cs | 67 ++++++++++++++++++++++
src/log4net/Layout/XmlLayoutSchemaLog4j.cs | 2 +-
2 files changed, 68 insertions(+), 1 deletion(-)
diff --git a/src/log4net.Tests/Layout/XmlLayoutSchemaLog4jTest.cs
b/src/log4net.Tests/Layout/XmlLayoutSchemaLog4jTest.cs
new file mode 100644
index 00000000..d7d14de0
--- /dev/null
+++ b/src/log4net.Tests/Layout/XmlLayoutSchemaLog4jTest.cs
@@ -0,0 +1,67 @@
+#region Apache License
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to you under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+#endregion
+
+using System;
+
+using log4net.Config;
+using log4net.Layout;
+using log4net.Repository;
+using log4net.Tests.Appender;
+
+using NUnit.Framework;
+
+namespace log4net.Tests.Layout
+{
+ /// <summary>
+ /// Tests for <see cref="XmlLayoutSchemaLog4J"/>
+ /// </summary>
+ [TestFixture]
+ public class XmlLayoutSchemaLog4JTest
+ {
+ /// <summary>
+ /// Tests a regression from 3.0.0 (log4j:data instead of log4j:throwable)
+ /// </summary>
+ [Test]
+ public void LogExceptionTest()
+ {
+ StringAppender stringAppender = new() { Layout = new
XmlLayoutSchemaLog4J() };
+
+ ILoggerRepository repository =
LogManager.CreateRepository(Guid.NewGuid().ToString());
+ BasicConfigurator.Configure(repository, stringAppender);
+ ILog log = LogManager.GetLogger(repository.Name, "TestLogger");
+
+ ThrowAndLog(42);
+
+ string logEventXml = stringAppender.GetString();
+ Assert.That(logEventXml, Does.Contain("log4j:throwable"));
+
+ void ThrowAndLog(int foo)
+ {
+ try
+ {
+ throw new TimeoutException();
+ }
+ catch (TimeoutException ex)
+ {
+ log.Error($"Error {foo}", ex);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/log4net/Layout/XmlLayoutSchemaLog4j.cs
b/src/log4net/Layout/XmlLayoutSchemaLog4j.cs
index 4d770f79..ff2df82f 100644
--- a/src/log4net/Layout/XmlLayoutSchemaLog4j.cs
+++ b/src/log4net/Layout/XmlLayoutSchemaLog4j.cs
@@ -221,7 +221,7 @@ protected override void FormatXml(XmlWriter writer,
LoggingEvent loggingEvent)
if (!string.IsNullOrEmpty(exceptionStr))
{
// Append the stack trace line
- writer.WriteStartElement("log4j:throwable", "log4j", "data", "log4net");
+ writer.WriteStartElement("log4j:throwable", "log4j", "throwable",
"log4net");
Transform.WriteEscapedXmlString(writer, exceptionStr!,
InvalidCharReplacement);
writer.WriteEndElement();
}