You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by "Constantin Makogon (Jira)" <ji...@apache.org> on 2020/04/07 15:04:00 UTC
[jira] [Closed] (LOG4NET-647) Log4Net do not work inside of
Finalize method
[ https://issues.apache.org/jira/browse/LOG4NET-647?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Constantin Makogon closed LOG4NET-647.
--------------------------------------
Resolution: Not A Problem
It was a side effect. Logger works in finalize method in example below:
{code:visualbasic}
Class LoggerTest
Private Shared 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()
c = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
Thread.Sleep(2000)
logger.Info("Goodbye")
End Sub
Public Sub SayHello()
System.Console.WriteLine("hello")
logger.Info("hello")
End Sub
Protected Overrides Sub Finalize()
logger.Info("finalize")
System.Console.WriteLine("finalize")
End Sub
End Class
{code}
> Log4Net do not work inside of Finalize method
> ---------------------------------------------
>
> Key: LOG4NET-647
> URL: https://issues.apache.org/jira/browse/LOG4NET-647
> Project: Log4net
> Issue Type: Bug
> Components: Core, Other
> Affects Versions: 2.0.8
> Reporter: Constantin Makogon
> Priority: Major
>
> Log4Net do not log while it's called from Finalize method. It particularly annoying if we want monitor destroyed object which was not closed (without call to Close method). Inside of Finalize method the logger object is not null but has no effect.
> Example:
> {code:visualbasic}
> 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
> {code}
> Config file
> {code:xml}
> <?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>
> {code}
>
> Result:
> {code}
> hello
> 2020-04-07 15:33:30,399 [1] INFO - hello
> finalize
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)