zoukankan      html  css  js  c++  java
  • log4net 在asp.net WEB应用程序中的配置

    我是一个三层架构的应用程序,将日志记录放在了业务层,并写入了数据库,整个使用操作步骤为以下步骤。

    第一步 编写配置文件

    文件名称为 log4net.config 内容如下

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
      <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
        <bufferSize value="1" />
        <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
        <connectionString value="server=fogwang;database=zzrd;uid=sa;pwd=sa;pooling=false;" />
        <commandText value="INSERT INTO LogInfo ([dtDate],[sThread],[sLevel],[sLogger], [ClientIP], [PageUrl],[sMessage],[sException],OpreateType,UserAccount,UIOrSysAdmin,LogType) VALUES (@log_date, @thread, @log_level, @logger, @ClientIP, @PageUrl,@message, @exception,@OpreateType,@UserAccount,@UIOrSysAdmin,@LogType)" />
        <parameter>
          <parameterName value="@log_date" />
          <dbType value="DateTime" />
          <layout type="log4net.Layout.RawTimeStampLayout" />
        </parameter>
        <parameter>
          <parameterName value="@thread" />
          <dbType value="String" />
          <size value="50" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%t" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@log_level" />
          <dbType value="String" />
          <size value="200" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%p" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@logger" />
          <dbType value="String" />
          <size value="200" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%logger" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@ClientIP" />
          <dbType value="String" />
          <size value="50"></size>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%properties{ClientIP}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@PageUrl" />
          <dbType value="String" />
          <size value="200"></size>
          <layout type="log4net.Ext.Web.ReflectionLayout">
            <conversionPattern value="%properties{RequestUrl}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@OpreateType" />
          <dbType value="String" />
          <size value="50"></size>
          <layout type="log4net.Ext.Web.ReflectionLayout">
            <conversionPattern value="%properties{OpreateType}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@UserAccount" />
          <dbType value="String" />
          <size value="50"></size>
          <layout type="log4net.Ext.Web.ReflectionLayout">
            <conversionPattern value="%properties{UserAccount}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@UIOrSysAdmin" />
          <dbType value="String" />
          <size value="10"></size>
          <layout type="log4net.Ext.Web.ReflectionLayout">
            <conversionPattern value="%properties{UIOrSysAdmin}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@LogType" />
          <dbType value="String" />
          <size value="50"></size>
          <layout type="log4net.Ext.Web.ReflectionLayout">
            <conversionPattern value="%properties{LogType}" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@message" />
          <dbType value="String" />
          <size value="3500" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%m" />
          </layout>
        </parameter>
        <parameter>
          <parameterName value="@exception" />
          <dbType value="String" />
          <size value="3500" />
          <layout type="log4net.Layout.ExceptionLayout" />
        </parameter>
      </appender>
      <!-- setup the root category, add the appenders and set the default level -->
      <root>
        <level value="WARN"/>
        <level value="INFO"/>
        <level value="DEBUG"/>
        <level value="FINE"/>
        <appender-ref ref="ADONetAppender" />
      </root>
      <logger name="StellaLogger">
        <level value="ALL"/>
        <appender-ref ref="AdoNetAppender" />
      </logger>
    </log4net>

    附:配置文件解释:

    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):当前日志对象的名称,例如:

    模式字符串为:%-10c -%m%n

    代码为:

    ILog log=LogManager.GetLogger(“Exam.Log”);

    log.Debug(“Hello”);

    则输出为下面的形式:

    Exam.Log - Hello

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

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

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

    例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

    176 [main] INFO org.foo.Bar - Located nearest gas station.

    第二步骤在业务层的属性文件关联配置文件:

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

    其中ConfigFile的属性为放在显示层中配置文件的位置

    第三步在业务层中的使用:

    #region 删除记录
          /// <summary>
          /// 删除记录
          /// </summary>
          /// <param name="id">ID(可多个)</param>
          /// <returns></returns>
          public bool Delete ( string id )
          {
              DataTable dt= dal.getNewsList("id,title,typename"," in in("+id+")");
              log4net.Ext.Web.IWebLog log = log4net.Ext.Web.WebLogManager.GetLogger(typeof(NewsBLL));


              log.Info("删除新闻标题:" + dt.Rows[0]["title"] + "新闻编号:" + dt.Rows[0]["id"] + "类别:" + dt.Rows[0]["typename"], WebUtility.Comm.GetAdminOrUIUserCook()[0], WebUtility.Comm.GetIP(), WebUtility.Comm.GetUrl(), log4net.Ext.Web.WebLogImpl.OpreateType.删除, log4net.Ext.Web.WebLogImpl.UIOrSys.后台, log4net.Ext.Web.WebLogImpl.LogType.信息操作日志);
              return dal.Delete ( id );
          }
          #endregion

    第四步:读取操作日志:

    数据层代码:

    public class LogOpreateDAL
       {
           public int Delete(string id)
           {
               return SqlHelper.ExecuteNonQuery(DBConn.GetSqlConn(), CommandType.Text, "Delete LogInfo Where LogID In(" + id + ")");
           }

           public DataSet GetListByPage(string expcon, int pagesize, int CurrentPage, out int PageCount, out int RecordCount)
           {
               PagerDAL dal = new PagerDAL();
               return dal.GetPagerList(DBConn.GetSqlConn(), "LogInfo", "LogId", 1, "*", pagesize, CurrentPage, expcon, out PageCount, out RecordCount);
           }

       }

    显示效果如下:

    TM截图未命名

  • 相关阅读:
    关于图片或者文件在数据库的存储方式归纳
    js默认比较第一个数字大小
    项目中empty遇到的一个问题
    thinkphp 一个页面使用2次分页的方法
    mysql处理海量数据时的一些优化查询速度方法
    项目中的一个和分页总数有关的子查询
    Mysql乱码
    HTML 5 <input> placeholder 属性
    form 表单jquery验证插件使用
    在网站制作中随时可用的10个 HTML5 代码片段
  • 原文地址:https://www.cnblogs.com/fogwang/p/2666611.html
Copyright © 2011-2022 走看看