.net项目中配置log4net

  log4net是常用的日志工具,个人在.net项目中也经常使用,下面介绍在web项目和windows服务项目中分别配置log4net的过程。

一、web项目

1.在项目中安装log4net程序包

  在vs的解决方案管理器中选择需要添加log4net的项目,右击,然后在弹出菜单中点击“管理NuGet程序包”。

  接着在打开的NuGet包管理器中选择“浏览”标签页,在搜索框中输入log4net搜索。在搜索结果中选择Apache经典红色羽毛图标的包,然后安装。

2.添加log4net配置文件

  两种方案选择一种:

  方案1.早期的log4net包安装后会自动生成log4net.config配置文件,目前新版的程序包安装后不会自动生成配置文件了,所以就直接在web.config文件中添加log4net配置信息。打开项目的web.config文件,找到节点,在该节点下添加配置信息,具体xml代码如下:

<!--log4net日志配置信息,较为简单,需要更丰富和强大的功能可以去查找更详细的资料-->
  <log4net>   
    <root>
      <level value="ALL" />
      <appender-ref ref="SysAppender" />
    </root>
    <logger name="WebLogger">
      <level value="DEBUG" />
    </logger>
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
    <!--日志输出的路径:D:\Log\,根据需要替换为实际的路径-->
      <param name="File" value="D:\Log\" />
      <!--是否向日志文件中追加文本,日志一般一天一份,当天的日志都是追加到同一份文件中-->
      <param name="AppendToFile" value="true" />
      <!--创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite-->
      <param name="RollingStyle" value="Date" />
      <!--文件名格式:Logs_年月日.txt,会根据日期自动变更-->
      <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
      <!--文件名是否动态生成,上面已经指定了格式,这里设为false-->
      <param name="StaticLogFileName" value="false" />
       <!--每条日志具体内容的格式-->
      <layout type="log4net.Layout.PatternLayout,log4net">
      <!--此处指定的格式为:时间(年月日时分秒毫秒) [线程id] 日志级别 当前日志对象名称 - 程序中输出的日志信息 换行-->
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
  </log4net>

  方案2.也可以选择新建一个log4net.config文件,在该文件下添加配置内容,记得在上面给出的代码外层加上节点

3.注册当前配置文件

  两种方案选择一种:

  方案1.在解决方案管理器中找到项目目录下的Properties,找到并打开AssemblyInfo.cs文件,在文件末尾追加注册信息,代码如下:

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

  方案2.也可以选择在Global.asax文件的Application_Start方法下加载配置文件,代码如下,缺少命名空间按提示引用:

log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/Web.config")));
4.添加log4net帮助类

  在解决方案管理器中选择项目,右击,接着选择菜单中的添加->新建项,新建一个类,命名为LogHelper.cs,然后在新建的文件中添加如下内容:

    public class LogHelper
    {
        private LogHelper()
        {

        }

        public static readonly log4net.ILog loginfo = log4net.LogManager.GetLogger("loginfo");

        public static readonly log4net.ILog logerror = log4net.LogManager.GetLogger("logerror");

        public static void SetConfig()
        {
            log4net.Config.XmlConfigurator.Configure();
        }

        public static void SetConfig(FileInfo configFile)
        {
            log4net.Config.XmlConfigurator.Configure(configFile);
        }

        public static void WriteLog(string info)
        {
            if (loginfo.IsInfoEnabled)
            {
                loginfo.Info(info);
            }
        }
        
        public static void WriteLog(string message,string info)
        {
            if (loginfo.IsInfoEnabled)
            {
                loginfo.Info(message+"-->"+info);
            }
        }
        
        public static void WriteLog(string info, Exception se)
        {
            if (logerror.IsErrorEnabled)
            {
                logerror.Error(info, se);
            }
        }
    }
5.使用log4net输出日志

  在程序中需要输出日志的地方使用如下代码即可输出日志:

LogHelper.WriteLog("日志内容");

二、windows服务项目

1.在项目中安装log4net程序包

  操作与web项目相同

2.添加log4net配置文件

  两种方案选择一种:

  方案1.windows服务项目中只有App.config配置文件,所以配置信息可以放到App.config文件中,添加方法和添加内容与web项目一致。

  方案2.也可以选择新建一个log4net.config文件,在该文件下添加配置内容,添加方法和添加内容与web项目一致。

3.注册当前配置文件

  在解决方案管理器中找到项目目录下的Properties,找到并打开AssemblyInfo.cs文件,在文件末尾追加注册信息,代码如下:

步骤2中选择方案1的注册代码:

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

步骤2中选择方案2的注册代码:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "log4net.config", Watch = true)]
4.添加log4net帮助类

  与web项目相同

5.使用log4net输出日志

  与web项目相同

三、总结

  本人在使用时也踩过不少坑,在网上参考过很多博客,虽然很多博客内容不是很全面,但是非常感谢这些博客作者提供的帮助,我在经过手动实践摸索后,将操作过程记录了下来,整理成这样一篇文档,在记录经验的同时也希望给其他人一些小小的帮助。

标签: log4net

添加新评论