箱から出してlog4netを使用していると仮定すると、次のように掘り下げてアペンダーをフラッシュできます。
public void FlushBuffers()
{
ILog log = LogManager.GetLogger("whatever");
var logger = log.Logger as Logger;
if (logger != null)
{
foreach (IAppender appender in logger.Appenders)
{
var buffered = appender as BufferingAppenderSkeleton;
if (buffered != null)
{
buffered.Flush();
}
}
}
}
編集:特定のアペンダーをフラッシュしたいという前提で上記を書きましたILog
(質問を読み直したので、おそらく悪い前提です)が、Stefanが下のコメントで指摘しているように、コードを単純化できます次のように、リポジトリ全体ですべてのアペンダーをフラッシュする場合は、ほとんどありません。
public void FlushBuffers()
{
ILoggerRepository rep = LogManager.GetRepository();
foreach (IAppender appender in rep.GetAppenders())
{
var buffered = appender as BufferingAppenderSkeleton;
if (buffered != null)
{
buffered.Flush();
}
}
}