【问题标题】:How can i define Log4Net configuration in a custom xml file?如何在自定义 xml 文件中定义 Log4Net 配置?
【发布时间】:2016-08-11 10:42:36
【问题描述】:

我在我的 C# 应用程序中使用 Log4Net。如何在自定义 xml 文件(不是 appconfig 文件)中定义我的 Log4Net 配置? 我如何告诉我的 xmlconfigurator 使用那个特定的 xml 文件?

【问题讨论】:

  • 喜欢这个? log4net.Config.XmlConfigurator.Configure(new FileInfo("filename"));
  • 谢谢,正是我想要的:[程序集:XmlConfigurator(ConfigFile = "../../Configuration.xml", Watch = true)]

标签: c# log4net app-config log4net-configuration log4net-appender


【解决方案1】:

我想你的意思是这个: log4net.Config.XmlConfigurator(配置文件 = "MyStandardLog4Net.config", Watch = true)]

参考:http://www.codeproject.com/Articles/140911/log-net-Tutorial

【讨论】:

  • 是的,正是我想要的:[程序集:XmlConfigurator(ConfigFile = "../../Configuration.xml", Watch = true)]
【解决方案2】:

公共静态类 LogHelper { 私有静态只读 ILog _log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    public static void InitLog()
    {
        string batchID = DateTime.Now.ToString("yyyy-MM-dd hh-mm-ss tt");
        log4net.GlobalContext.Properties["LogName"] = batchID;
        log4net.GlobalContext.Properties["ProjectName"] = Assembly.GetCallingAssembly().GetName().Name;     // Get the Current Project Name 

        ////log4net.Config.XmlConfigurator.Configure();   // Commented due to external log4net config file instead of App.config

        //if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["Log4Net-ConfigFile"]) && !String.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["Log4Net-ConfigFile"]))
        //{
        //    log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(ConfigurationManager.AppSettings["Log4Net-ConfigFile"].Trim())); // External log4net.config file path
        //}

        log4net.Config.XmlConfigurator.Configure();
    }

    public static string CurrentLogFileName()
    {
        return Convert.ToString(log4net.GlobalContext.Properties["LogName"]);
    }

    public static void LogError(Exception ex)
    {
        _log.Error("System Error :" + ex.Message, ex);
    }

    public static void LogError(string message)
    {
        _log.Error("Custom Error :" + message);
    }

    public static void LogError(Exception ex, string message)
    {
        LogError(message);
        LogError(ex);
    }

    public static void LogWarning(string message)
    {
        _log.Warn(message);
    }

    public static void LogMessage(string message)
    {
        _log.Info(message);
    }

    public static void LogDebug(string message)
    {
        _log.Debug(message);
    }
}
<!-- Console Appender -->
<appender name="console" type="log4net.Appender.ConsoleAppender">
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level: %message%newline" />
  </layout>
</appender>

<!-- Colored ConsoleAppender  -->
<appender name="ColoredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
  <mapping>
    <level value="ERROR" />
    <foreColor value="White, HighIntensity" />
    <backColor value="Red, HighIntensity" />
  </mapping>
  <mapping>
    <level value="Info" />
    <foreColor value="Green, HighIntensity" />
    <!--<backColor value="Green" />-->
  </mapping>
  <mapping>
    <level value="Warn" />
    <foreColor value="Yellow, HighIntensity" />
    <!--<backColor value="Green" />-->
  </mapping>
  <mapping>
    <level value="Debug" />
    <foreColor value="Green, HighIntensity" />
    <!--<backColor value="Green" />-->
  </mapping>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date %-5level: %message%newline" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
  <appender-ref ref="ColoredConsoleAppender" />
</root>

【讨论】:

  • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2012-01-11
  • 2018-06-17
相关资源
最近更新 更多