代码之家  ›  专栏  ›  技术社区  ›  mxg

控制台应用程序的log4net配置

  •  10
  • mxg  · 技术社区  · 15 年前

    有人能建议如何为控制台应用程序配置log4net吗?

    或者至少如何/在哪里捕捉 Application_Start 事件?(此时需要一些呼叫)

    事先谢谢!

    2 回复  |  直到 11 年前
        1
  •  10
  •   Greg Levenhagen    11 年前

    您需要在第一个记录器被实例化之前对其进行配置。

    这样做:

    • 您的主类(program.cs)不应该有记录器

    • 主方法不应引用任何具有记录器的类。

    • 然后可以在主方法中配置log4net。

    或者,您可以使用包装类来实例化记录器,以确保在创建记录器之前配置了log4net,例如:

    static class Log4NetHelper
    {
        private static bool _isConfigured;
    
        static void EnsureConfigured()
        {
            if (!_isConfigured)
            {
                ... configure log4net here ...
                _isConfigured = true;
            }
        }
    
        public static ILog GetLogger(string name)
        {
            EnsureConfigured();
            log4net.ILog logger = log4net.LogManager.GetLogger(name);
            return logger;
        }
    }
    
        2
  •  13
  •   Ron Klein Noa Kuperberg    15 年前

    尝试写作

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]
    

    在里面 AssemblyInfo.cs

    就是这样!

    推荐文章