【发布时间】:2011-08-19 01:44:39
【问题描述】:
我有一个类,我为它的每个实例创建一个新的记录器,并为其附加一个缓冲区附加程序和一个飞行附加程序。 一切都在运行时完成,没有从配置文件中获取任何信息。
现在要在类的自定义 dispose 方法中释放资源,我需要关闭该特定记录器并释放其所有附加资源以避免任何内存泄漏。
目前我一直在做的是至少刷新文件附加程序并写入所有日志信息,但既不释放对该特定日志文件的锁定也不释放其任何资源。
关闭记录器而不关闭正在处理的其他活动记录器的正确方法是什么
log4net.ILog log = log4net.LogManager.GetLogger(loggerName);
foreach (IAppender iapp in log.Logger.Repository.GetAppenders())
{
BufferingAppenderSkeleton buffered = iapp as BufferingAppenderSkeleton;
if (buffered is BufferingForwardingAppender)
{
((BufferingForwardingAppender)buffered).Flush();
}
}
log.Logger.Repository.Shutdown();
我希望我的问题已经足够清楚了:)
【问题讨论】: