[
https://issues.apache.org/jira/browse/LOG4NET-403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13810193#comment-13810193
]
Dominik Psenner commented on LOG4NET-403:
-----------------------------------------
The loggers should be static attributes or properties, otherwise they might get
finalized by the GC when their reference counter is 0 (i.e. the containing
object is finalized). Further, if these attributes or properties are not static
the application may suffer of a severe performance penalty for every
instantiation. Please close and mark the issue as invalid if making the
attribute/property static solves your problems.
> LocalDataStoreSlot exception when using log4net in Dispose method
> -----------------------------------------------------------------
>
> Key: LOG4NET-403
> URL: https://issues.apache.org/jira/browse/LOG4NET-403
> Project: Log4net
> Issue Type: Bug
> Components: Core
> Affects Versions: 1.2.11
> Environment: Windows 7 64 bit, .Net Framework 4.5
> Reporter: PiotrG
> Priority: Critical
>
> Setting ThreadContext property in Dispose method called by GC thread throws
> Exception:
> LocalDataStoreSlot storage has been freed
> Stacktrace:
> w System.LocalDataStore.GetData(LocalDataStoreSlot slot)
> w System.Threading.Thread.GetData(LocalDataStoreSlot slot)
> w log4net.Util.ThreadContextProperties.GetProperties(Boolean create)
> w log4net.Util.ThreadContextProperties.set_Item(String key, Object value)
> w xxx.Dispose(Boolean freeAlsoManagedObjects)
> w xxx.Finalize()
> Code:
> private void Dispose(bool freeAlsoManagedObjects)
> {
>
> if (_log.IsErrorEnabled)
> ThreadContext.Properties["method"] = "Dispose"; // throws Exception
>
--
This message was sent by Atlassian JIRA
(v6.1#6144)