[ 
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)

Reply via email to