IKVM.OpenJDK.Jdbc 어셈블리에서 발생한 예외를 기록하려고합니다. 한 가지 예외는 java.sql.SQLException
(및 하위 클래스)입니다. log4Net은 java.sql.SQLException
이 IEnumerable
을 구현하고 그 구현이 그 자체를 반환하기 때문에이 문제를 해결할 것으로 보인다. 나는 log4net 코드를 밟았으며 log4net은 다음과 같이 말합니다 :로깅 java.sql.SQLException으로 인해 오버플로가 발생합니다.
은 결국 우리가"여기에 기록 할 SQLException이 있습니다. 기록해야 할 정보가 있습니까? 예, 있습니다. IEnumerable, IEnumerable 내부에 물건을 더 잘 기록해야합니다. 그래서 IEnumerable에 무엇이 있습니까? 아, 로그하는 SQLException입니다. 로그해야하는 항목이 있습니까? 예, 있습니다. IEnumerable, 나는 더는 IEnumerable 내부의 물건을 기록했다. 그는 IEnumerable에 그래서 뭐? 아, SQLException이있다 보면 ... "
StackOverflowException
를 얻을.
아무도이 문제를 이미 가지고 있었고 해결 했습니까?
최소한의 검증 가능한 완전한 예 :
static void Main(string[] args)
{
java.sql.SQLException ex = new java.sql.SQLException();
log4net.Config.BasicConfigurator.Configure();
log4net.ILog logger = log4net.LogManager.GetLogger("foo");
logger.Error("This exception overflows the stack -> ", ex); // Exception here
Console.WriteLine("Finished. Press any key...");
Console.ReadKey();
}
그리고 내가 컴파일 할 수있는 권한 NuGets를 얻기 위해 사용되는 packages.config (NuGet 소스 = https://www.nuget.org/api/v2/) :
<packages>
<package id="log4net" version="2.0.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Jdbc" version="7.2.4630.5" targetFramework="net452" />
<!-- The packages below are dependencies from manually getting the packages above. -->
<package id="IKVM.OpenJDK.Charsets" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Core" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Misc" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Naming" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Remoting" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Security" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.SwingAWT" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Text" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.Util" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.OpenJDK.XML.API" version="7.2.4630.5" targetFramework="net452" />
<package id="IKVM.Runtime" version="7.2.4630.5" targetFramework="net452" />
</packages>