关于log4net 在自己dll里面使用时配置的问题

配置文件 log4net.config内容,关于样式部分参考https://logging.apache.org/log4net/download_log4net.cgi
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
  <log4net>
     
    <!--定义输出到文件中-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="D:\config\RevitLogJerry_" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <!--<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>-->
      <datePattern value="yyyyMMddhh'.log'" />
      <staticLogFileName value="false" />
      <param name="MaxSizeRollBackups" value="100" />
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->        

        <!--
            DEBUG 14:46:37 类名:TestLog4NetInDll.TestLogCommand 行号:35 信息:【提示001】 
            ERROR 14:46:37 类名:TestLog4NetInDll.TestLogCommand 行号:40 信息:【第0条测试信息】 
         -->
        <conversionPattern value="%level %date{HH:mm:ss} 类名:%C 行号:%L 信息:【%message】 %n" />
      </layout>
    </appender>
   
    <logger name="zfc">
      <level value="DEBUG" />
      <appender-ref ref="RollingLogFileAppender" />
    </logger>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

 
 

使用部分

01、帮助类

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;


using log4net;
using log4net.Config;

namespace TestLog4NetInDll
{
  public class LogHelper
  {
    public const string ConfigFileName = "log4net.config";
    static ILog loger;

    public ILog LogerInstance
    {
      get
      {
        if (loger == null)
          loger = LogManager.GetLogger("zfc");
        return loger;
      }

    }

    //类初始化时将进行配置文件的路径确定
    public LogHelper()
    {


#if DEBUG
      FileInfo configFile = new FileInfo(@"D:\config\log4net.config");
#else
      //发布版的配置文件路径为:dll所在文件夹的文件夹的平级目录
      /*
       C:\Users\aaa\source\repos\TestLog4NetInDll\TestLog4NetInDll\bin\Release\TestLog4NetInDll.dll

       C:\Users\aaa\source\repos\TestLog4NetInDll\TestLog4NetInDll\bin\log4net.config 
       
       */
      string currentCommandAssemblyPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
      //
       FileInfo fileInfo = new FileInfo(currentCommandAssemblyPath);
      //
       string tempImgPath = fileInfo.Directory.Parent.FullName;
      //
      string path = Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().FullName, ConfigFileName); 
      FileInfo configFile = new FileInfo(path);
#endif

      XmlConfigurator.ConfigureAndWatch(configFile);
    }


    protected void LogException(Exception ex)
    {
      LogerInstance.Error("", ex);
    }

    protected void LogInfo(string msg)
    {
      LogerInstance.Info(msg);
    }


  }
}

02、在动态链接库里面调用时

      LogHelper loger = new LogHelper();     
    ILog  logHelper = loger.LogerInstance;
      if (!logHelper.IsErrorEnabled)
      {
        TaskDialog.Show("TestLog", logHelper.IsErrorEnabled.ToString() + "           IsErrorEnabled False");
      }
      logHelper.Debug("提示001");
03、说明,不需要另外其他地方配置,因为在帮助类里面对config文件路径进行了配置,当然大家按照实际使用情况改为自己实际存放的路径













猜你喜欢

转载自blog.csdn.net/jerryzfc/article/details/80434460