log4net配置文件独立和解决方案中不同项目的日志共享

一、共享日志项目建立

  • 首先,在解决方案中,新建一个类库项目中,命名为Log,新建一个配置文件,具体方法为右击项目->添加->新建项->应用程序配置文件
    并将其命名为log4net.config。也可以直接将App.config赋值后更名为log4net.config。
    这里写图片描述


  • (关键)右击该配置文件,属性->复制到输出目录->始终复制
    这里写图片描述



    完成后如下:
    这里写图片描述
    在Class1.cs(可自行命名)中对log4net进行封装,以便可以在其它项目中使用。

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
namespace Log
{
    public static class LogHelper
    {
        static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

        public static void WriteDebug(string message)
        {
            log.Debug(message);
        }

        public static void WriteError(string message)
        {
            log.Error(message);
        }
    }
}

在需要使用日志类的项目中引用上面的Log项目即可。
至此就可以使用相同的配置文件来配置log4net并在解决方案中共享了。

二、配置文件的参考

以下配置文件,将Debug和Error等级的日志分散到不同的文件夹,且以时间格式命名日志文件。可根据需要进行修改
注意:
日志的文件名的命名中不变的部分以单引号封装,如下面的log.txt部分

<datePattern value="yy\_MM\_dd\_'log.txt'"/>

配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  
  <log4net>
    <!--定义输出到文件中-->
    <appender name="RollingLogDebugFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="log\\Debug\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM\\yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <!--定义文件最大个数,超过按顺序删除-->
      <param name="MaxSizeRollBackups" value="100"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <maximumFileSize value="10MB" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="Debug" />
        <levelMax value="Debug" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%newline %n%date:   %message%newline %n"/>
      </layout>
    </appender>
    <appender name="RollingLogErrorFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-->
      <file value="log\\Error\\"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
      <datePattern value="yyyyMM\\yyyyMMdd'.txt'"/>
      <staticLogFileName value="false"/>
      <!--定义文件最大个数,超过按顺序删除-->
      <param name="MaxSizeRollBackups" value="100"/>
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <maximumFileSize value="10MB" />
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="Error" />
        <levelMax value="Error" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <!--每条日志末尾的文字说明-->
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别:  %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>
      </layout>
    </appender>
    <root>
      <level value="ALL"/>
      <!--文件形式记录日志-->
      <appender-ref ref="RollingLogErrorFileAppender"/>
      <appender-ref ref="RollingLogDebugFileAppender"/>
    </root>
  </log4net>
</configuration>

三、使用log4net的一般使用步骤

  • 配置log4net配置文件
    具体参考二


  • 程序集特性设置

在每个要使用日志的命名空间上加上

[assembly: log4net.Config.XmlConfigurator(ConfigFile ="log4net.config",Watch = true)]

  • 创建Logger

在Logger中,log4net提供了一个名为LogManager的类给我们用于获取或者创建一个Logger。LogManager提供了方法GetLogger(),该方法接收一个string类型的参数,用于指定Logger的名称:

log4net.ILog log = log4net.LogManager.GetLogger("Logger_Name");

当指定名称的Logger不存在时,LogManager将自动创建一个。通常情况下,都是使用Logger所在类的名称来作为Logger的名称,即GetLogger方法的参数可以是typeof(ClassName)。也可以使用如下的方法来传递该参数:

log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

尽管上面的代码比typeof(ClassName)要长的多,但是这样做可以在任何一个类中使用相同的方法传递参数,从而减少出错的机率。

创建了logger后,就可以使用log来记录日志了

log.Debug("debug info");//记录Debug级别的日志
log.Error("error info");//记录Error级别的日志
展开阅读全文

没有更多推荐了,返回首页