diff --git a/Src/StackifyLib.log4net.Tests/StackifyLib.log4net.Tests.csproj b/Src/StackifyLib.log4net.Tests/StackifyLib.log4net.Tests.csproj
index 75acbae..66781be 100644
--- a/Src/StackifyLib.log4net.Tests/StackifyLib.log4net.Tests.csproj
+++ b/Src/StackifyLib.log4net.Tests/StackifyLib.log4net.Tests.csproj
@@ -33,8 +33,8 @@
4
-
- ..\packages\log4net.2.0.11\lib\net45\log4net.dll
+
+ ..\packages\log4net.2.0.17\lib\net45\log4net.dll
..\packages\Newtonsoft.Json.13.0.1\lib\net45\Newtonsoft.Json.dll
@@ -42,9 +42,13 @@
..\packages\NUnit.3.13.2\lib\net45\nunit.framework.dll
+
+ ..\packages\StackifyLib.2.2.15\lib\net452\StackifyLib.dll
+
+
@@ -65,10 +69,6 @@
{7d98e5e3-a3e7-4613-8bb7-80a60d86a5e8}
StackifyLib.log4net
-
- {03cf7411-65e2-4998-a157-9224eca6199b}
- StackifyLib
-
diff --git a/Src/StackifyLib.log4net.Tests/packages.config b/Src/StackifyLib.log4net.Tests/packages.config
index f89ee51..19fcb11 100644
--- a/Src/StackifyLib.log4net.Tests/packages.config
+++ b/Src/StackifyLib.log4net.Tests/packages.config
@@ -1,6 +1,7 @@
-
+
+
\ No newline at end of file
diff --git a/Src/StackifyLib/Models/ErrorItem.cs b/Src/StackifyLib/Models/ErrorItem.cs
index b14c7e1..4692b00 100644
--- a/Src/StackifyLib/Models/ErrorItem.cs
+++ b/Src/StackifyLib/Models/ErrorItem.cs
@@ -298,15 +298,15 @@ public string FramesToString()
{
StringBuilder sb = new StringBuilder();
- foreach (var item in this.StackTrace)
+ if (InnerError != null)
{
- sb.AppendFormat(" at {0}\r\n", item.Method);
+ sb.Append(InnerError.FramesToString());
+ sb.Append("--- End of inner exception stack trace ---\r\n");
}
- if (InnerError != null)
+ foreach (var item in this.StackTrace)
{
- sb.Append("--- End of inner exception stack trace ---\r\n");
- sb.Append(InnerError.FramesToString());
+ sb.AppendFormat(" at {0}\r\n", item.Method);
}
return sb.ToString();
diff --git a/Src/StackifyLibCore.sln b/Src/StackifyLibCore.sln
index a726538..6f15531 100644
--- a/Src/StackifyLibCore.sln
+++ b/Src/StackifyLibCore.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.30907.101
+# Visual Studio Version 17
+VisualStudioVersion = 17.11.35303.130
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StackifyLib", "StackifyLib\StackifyLib.csproj", "{03CF7411-65E2-4998-A157-9224ECA6199B}"
EndProject
@@ -71,11 +71,9 @@ Global
{D0E1AABD-6397-4CC7-9737-4904A4BF5BCD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0E1AABD-6397-4CC7-9737-4904A4BF5BCD}.Release|Any CPU.Build.0 = Release|Any CPU
{2B832B34-BA30-4B5A-8E78-D6DC78AF16FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2B832B34-BA30-4B5A-8E78-D6DC78AF16FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2B832B34-BA30-4B5A-8E78-D6DC78AF16FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2B832B34-BA30-4B5A-8E78-D6DC78AF16FB}.Release|Any CPU.Build.0 = Release|Any CPU
{BC6FDF2B-E063-4F8B-ABBA-6BD9425D4C64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BC6FDF2B-E063-4F8B-ABBA-6BD9425D4C64}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BC6FDF2B-E063-4F8B-ABBA-6BD9425D4C64}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BC6FDF2B-E063-4F8B-ABBA-6BD9425D4C64}.Release|Any CPU.Build.0 = Release|Any CPU
{CB09D719-F393-413D-B5CD-E0125543AD24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -99,15 +97,12 @@ Global
{647F27AD-13D7-40C2-A7BB-97A5D19CE3D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{647F27AD-13D7-40C2-A7BB-97A5D19CE3D5}.Release|Any CPU.Build.0 = Release|Any CPU
{ADBD2138-9DE7-4211-AF58-84C7F0F9BEA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ADBD2138-9DE7-4211-AF58-84C7F0F9BEA5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ADBD2138-9DE7-4211-AF58-84C7F0F9BEA5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ADBD2138-9DE7-4211-AF58-84C7F0F9BEA5}.Release|Any CPU.Build.0 = Release|Any CPU
{99C81723-20FB-4241-862C-32F7ADDB7A9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {99C81723-20FB-4241-862C-32F7ADDB7A9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99C81723-20FB-4241-862C-32F7ADDB7A9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99C81723-20FB-4241-862C-32F7ADDB7A9B}.Release|Any CPU.Build.0 = Release|Any CPU
{EC5742DF-C1A8-4A7A-81DC-B6E0A4D3472D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EC5742DF-C1A8-4A7A-81DC-B6E0A4D3472D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC5742DF-C1A8-4A7A-81DC-B6E0A4D3472D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC5742DF-C1A8-4A7A-81DC-B6E0A4D3472D}.Release|Any CPU.Build.0 = Release|Any CPU
{18F96933-468E-4104-961E-0C68A5EF2B29}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
diff --git a/test/StackifyLib.UnitTests/Models/ErrorItem_Tests.cs b/test/StackifyLib.UnitTests/Models/ErrorItem_Tests.cs
new file mode 100644
index 0000000..633b046
--- /dev/null
+++ b/test/StackifyLib.UnitTests/Models/ErrorItem_Tests.cs
@@ -0,0 +1,78 @@
+// Copyright (c) 2024 BMC Software, Inc.
+// Copyright (c) 2021-2024 Netreo
+// Copyright (c) 2019 Stackify
+using StackifyLib.Models;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Xunit;
+using Moq;
+
+namespace StackifyLib.UnitTests.Models
+{
+ public class ErrorItem_Tests
+ {
+
+ [Fact]
+ public async Task TestExceptionStringWithInnerException()
+ {
+ var expectedString = string.Join(
+ Environment.NewLine,
+ "System.Exception: Wrapping the exception to see the differences between outer and inner exceptions. ---> System.Exception: Throwing this exception to see all properties like stacktrace filled",
+ " at StackifyLib.UnitTests.Models.ExampleService.ThrowInnerException()",
+ " at StackifyLib.UnitTests.Models.ExampleService.CreateCaughtException()",
+ "--- End of inner exception stack trace ---",
+ " at StackifyLib.UnitTests.Models.ExampleService.ThrowOuterException(System.Exception)",
+ " at StackifyLib.UnitTests.Models.ExampleService.CreateCaughtException()",
+ " at StackifyLib.UnitTests.Models.ErrorItem_Tests+d__0.MoveNext()",
+ ""
+ );
+ try
+ {
+ //ExampleService service = new ExampleService();
+ ExampleService.CreateCaughtException();
+ }
+ catch (Exception ex)
+ {
+ //PrintExceptionInfo(ex);
+ var exceptionString = new ErrorItem(ex).ToString();
+ Assert.Contains(expectedString, exceptionString);
+ }
+ }
+ }
+
+ class ExampleService
+ {
+ public static Exception CreateCaughtException()
+ {
+ try
+ {
+ try
+ {
+ ThrowInnerException();
+ }
+ catch (Exception exception)
+ {
+ ThrowOuterException(exception);
+ }
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ // NOTE: never reached, but needed for the compiler.
+ return null;
+ }
+ private static void ThrowOuterException(Exception exception)
+ {
+ throw new Exception("Wrapping the exception to see the differences between outer and inner exceptions.", exception);
+ }
+ private static void ThrowInnerException()
+ {
+ throw new Exception("Throwing this exception to see all properties like stacktrace filled");
+ }
+ }
+}
diff --git a/test/StackifyLib.UnitTests/StackifyLib.UnitTests.csproj b/test/StackifyLib.UnitTests/StackifyLib.UnitTests.csproj
index f7cf30a..a4c6e25 100644
--- a/test/StackifyLib.UnitTests/StackifyLib.UnitTests.csproj
+++ b/test/StackifyLib.UnitTests/StackifyLib.UnitTests.csproj
@@ -16,7 +16,7 @@
-
+