Я не нашел ни одного документа и ни одного вопроса о том, почему журнал 4net не работает в методе Finalize
. Я сделал этот небольшой пример, показывающий проблему:
Class LoggerTest
Private ReadOnly logger As log4net.ILog = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)
Public Shared Sub Main()
log4net.Config.XmlConfigurator.Configure(New System.IO.FileInfo("LoggerTest.log4net"))
Dim c As New LoggerTest
c.SayHello()
End Sub
Public Sub SayHello()
System.Console.WriteLine("hello")
logger.Info("hello")
End Sub
Protected Overrides Sub Finalize()
System.Console.WriteLine("finalize")
logger.Info("finalize")
End Sub
End Class
и файл журнала 4net fconfig
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
</configuration>
после выполнения приведенного выше кода я получаю следующие результаты в своей консоли:
hello
2020-04-07 12:36:24,678 [1] INFO - hello
finalize
Знаете ли вы, это нормально? Можно ли использовать метод log 4net внутри Finalize
?