如果未正确配置Log4net,则例外

时间:2009-05-12 11:51:39

标签: .net log4net

按照设计,如果无法正确配置(http://log4net.sourceforge.net/release/1.2.0.30316/doc/manual/faq.html#reliable),Log4net只会向控制台输出消息。

日志记录是我的应用程序的关键部分,因此想知道Log4net是否配置正确。我无法找到任何方法从Log4net获取信息,所以我写了这段代码。但我根本不喜欢这个策略。 还有更好的建议吗?

        TextWriter errorConsole = new StringWriter();
        TextWriter defaultErrorConsole = Console.Error;
        Console.SetError(errorConsole);
        try
        {
            //configure Log4net

            string errorMessage = errorConsole.ToString();
            bool initializationError = errorMessage.IndexOf("log4net", StringComparison.OrdinalIgnoreCase) == -1;
            if (initializationError)
            {
                throw ...
            }
        }
        finally
        {
            Console.SetError(defaultErrorConsole);
        }

同样在记录消息时,例如调用ILog.Error。有没有办法看看它是否被记录?

1 个答案:

答案 0 :(得分:1)

配置期间发生的任何错误都会使用the log4net.Util.LogLog class在log4net内部记录。不幸的是,在当前版本中,这个类并没有暴露很多可以帮助你的东西。另一方面,在the current source中,您现在可以订阅LogReceived事件,只要收到内部日志消息就会触发该事件。

logger存储库也使用ILoggerRepository.ConfigurationMessages()方法进行了扩展,该方法公开了最新的内部消息列表。

关于监视是否记录了消息:appender,至少是在AppenderSkeleton类上构建的appender,使用与配置期间使用的相同的内部错误消息。因此,使用最新的源代码,您将通过LogReceived事件收到任何此类通知。