转载:使用单独的log4net类

1、新建一个解决方案,取名为AloneLog

2、添加一个类库工程,取名为Log.Class

     2.1 为Log.Class工程引用log4net.dll;

     2.2 为Log.Class工程添加log4net.dll的引用;

     2.3在AssemblyInfo.cs文件的最后添加:

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

    2.4 为Log.Class工程添加一个输出日志的类文件LogOut.cs,其内容如下:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AloneLog
{
    public class LogOut
    {
        public static void debug(string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
            if (log.IsDebugEnabled)
            {
                log.Debug(message);
            }
            log = null;
        }

        public static void error(string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
            if (log.IsErrorEnabled)
            {
                log.Error(message);
            }
            log = null;
        }

        public static void fatal(string message)
        {

            log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
            if (log.IsFatalEnabled)
            {
                log.Fatal(message);
            }
            log = null;
        }
        public static void info(string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
            if (log.IsInfoEnabled)
            {
                log.Info(message);
            }
            log = null;
        }

        public static void warn(string message)
        {
            log4net.ILog log = log4net.LogManager.GetLogger("LogOut");
            if (log.IsWarnEnabled)
            {
                log.Warn(message);
            }
            log = null;
        }
    }
}

   2.5 编译Log.Class类库工程。

3、添加一个web 应用程序,取名为Log.Web。

    3.1 为Log.Web应用程序引入Log.Class工程bin目录下的Log.Class.dll;

   3.2 在web 应用程序Log.Web的配置文件web.config文件中添加log4net的配置:

   <?xml version="1.0"?>
<configuration>
 <configSections>
  <sectionGroup >

........
  </sectionGroup>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />

  </configSections>


 <appSettings/>
 <connectionStrings/>

  <log4net>
    <root>
      <!--
   <level value="ALL" />
   <appender-ref ref="rootFile" />
   -->
    </root>
    <logger name="LogWebEdu">
      <level value="DEBUG" />
      <appender-ref ref="rollingFile" />
    </logger>
    <appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name="File" type="" value="log/log.txt" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="yyyyMMdd" />
      <param name="StaticLogFileName" value="true" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%n%d %r [%t] %-5p %c %L - %m%n" />
      </layout>
    </appender>
  </log4net>


  <system.web>

......
 </system.web>
</configuration>

    3.2 在需要输出日志的文件里(在此为default.aspx.cs)调用输出日志的方法,代码如下:

  using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Log.Class;

namespace Log.Web
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                LogOut.debug("单独日志类测试");
            }

        }
    }
}

除此之外,不需要再配置其它内容,原来写在一起的时候,还要在gloab.asax里添加对log4net的声明,在这个项目中我没有添加也可以输出日志文件,在web应用程序Log.Web的AssemblyInfo.cs中也没有添加对log4net的声明,只是在类库文件的AssemblyInfo.cs中添加了。

7、运行Log.Web应用程序,在Log.Web目录下会多了一个log目录,在log目录下就可以看到日志文件了,

2009-04-26 11:17:36,671 86425156 [8] DEBUG LogOut 15 - 单独日志类测试

附加:

log4net.Layout.PatternLayout中的转换模式(ConversionPattern)

%m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息

%n(new line):换行

%d(datetime):输出当前语句运行的时刻

%r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数

%t(thread id):当前语句所在的线程ID

%p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等

%c(class):当前日志对象的名称,

%L:输出语句所在的行号

%F:输出语句所在的文件名

%-数字:表示该项的最小长度,如果不够,则用空格填充

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanli0823/archive/2009/04/25/4122150.aspx#FeedBack

原文地址:https://www.cnblogs.com/qipilang/p/1623933.html