首页 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
资讯 业界资讯 软件杂谈 编程开发 网站建设 网络观查 搜索引擎 移动应用 网站运营 网络地图
开发 移动开发 Web前端 架构设计 编程语言 互联网 数据库 系统运维 云计算 开发杂谈
[架构设计] 【.NET】log4net配置文件解析
【.NET】log4net配置文件解析

       
          Log4Net是一个开源日志记录组件,将log4net.dll引入到项目References中,通过它可以将.net应用程序的日志记录到多种介质之中,并且我们还可以设置和标示日志的级别等。


        然后我们从配置文件入手,我们可以将配置写在web.config,也可以写到一个单独的配置文件中,可以命名为log4net.config.使用log4net需要知道其中两个比较重要的概念:logger 和 appender。logger是日志记录对象,后者是日志记录的目标也就是控制台,文件,数据库等。使用时,先获得一个用来记录日志的工具对象logger,然后为logger对象指定日志的记录位置.这就是配置文件为我们做好的事.


先看一个我写好的配置.






       
       我将配置文件写在了一个单独的文件中,这样有两点好chǔ:
           l 不需要重新编译源代码就能改变配置; 
        2 可以在程序正运行的时候就改变配置。(这一点在一些Web程序和远程过程调用的程序中很重要)


          后来因为我们的ITOO项目太大,这样写配置文件需要多个子系统分别维hù,我就把做的这部分放到了资源文件中,和项目一起打包成dll,统一让各系统引用.这样一来改变配置文件需要重新引用,不过比起多方维hù,更能减shao出错.
         我在这里配置了多个logger,各系统调用时传来不同的参数,loggerName,就可以实现每个系统的异常将被写入到单独的文件中或数据库表中.
如 

1.将异常日志写到文件



<!--权限系统-->
    <logger name="AuthoritySystem">
      <level value="ALL"/>
      <appender-ref ref="AuthoritySystemFileAppender"/>
    </logger>

<!--权限系统-->
    <appender name="AuthoritySystemFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
      <!--文件夹名-->
      <param name="File" value="c:\log\AuthoritySystemLog\Exception\" />
      <param name="AppendToFile" value="true" />
      <!--根据日志创建最新的-->
      <param name="RollingStyle" value="Date" />
      <!--文件名的格式-->
      <param name="DatePattern" value=""Logs_"yyyy-MM-dd".txt"" />
      <!--文件名动态生成-->
      <param name="StaticLogFileName" value="false" />
      <!--日志内容的格式-->
      <layout type="log4net.Layout.PatternLayout,log4net">
        <!--<param name="ConversionPattern" value="%d %newline [%t%] %-5p %c - %m%n" />-->
        <param name="ConversionPattern" value="时间: %d 线程ID: [%t%] 日志级别: %-5p 出错系统名: %c - 出错描述: %m%n" />
        <param name="Header" value="
---------Header---------
" />
        <param name="Footer" value="
---------Footer---------
" />
      </layout>

    </appender> 

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

2.将操作日志写入到数据库



<!--权限系统-->
    <logger name="AuthoritySystem">
      <level value="Info"/>
      <appender-ref ref="AuthoritySystemAdoNetAppender"/>
    </logger>

 <!--SqlServer数据库-->
    <!--权限系统-->
    <appender name="AuthoritySystemAdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="server=192.168.24.118;database=Log;user id=sa;password=7027"/>
      <commandText value="INSERT INTO AuthoritySystem (Datetime,Thread,Log_Level,Logger,Message,userid,username,ip,clazz,method,result) VALUES (@log_date, @thread, @log_level, @logger, @message,@userid,@username,@ip,@clazz,@method,@result)"/>
      <bufferSize value="1"/>
      <!--默认已有的成员 -->
      <parameter>
        <parameterName value="@log_date"/>
        <dbType value="DateTime"/>
        <layout type="log4net.Layout.RawTimeStampLayout"/>
      </parameter>
      <parameter>
        <parameterName value="@thread"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_level"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="4000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
      <!--自定义成员 -->
       <parameter>
        <parameterName value="@userid"/>
        <dbType value="String"/>
        <size value="50"/>        
        <layout type="LogDB.CustomLayout">
          <conversionPattern value="%userid"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@username"/>
        <dbType value="String"/>
        <size value="20"/>
        <layout type="LogDB.CustomLayout">
          <conversionPattern value="%username"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@ip"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="LogDB.CustomLayout">
          <conversionPattern value="%ip"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@clazz"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="LogDB.CustomLayout">
          <conversionPattern value="%clazz"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@method"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="LogDB.CustomLayout">
          <conversionPattern value="%method"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@result"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="LogDB.CustomLayout">
          <conversionPattern value="%result"/>
        </layout>
      </parameter>
    </appender>


        Log4net默认数据表中有Datetime,Thread,Log_Level,Logger,Message这五个字段,我的数据库名为Log,表名为各系统名,按照系统日志记录要求,又加了id,userid,username,ip,clazz,method,result几个字段.数据表结构现在是12个字段,提前在数据库定义.
 
<bufferSizevalue="1"/>
该属xìng设置缓存区大小, 1表明有1条日志就写入数据库, 如果是10就表示日志到达10条时一起写入.
 
          Log4net使用过程中关于配置文件的内容就先写到这里,更多内容下一篇博客
<<Log4net将操作日志写入数据库>>  敬请期待.


 此文从网络中自动搜索生成,不代表本网站赞成被搜索网站的内容或立场    查看原文
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 新闻资讯 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年9日历
2018-9-26 15:24:58
 
  网站联系 软件世界网-www.sjsjw.com ©2014 蜀ICP备06016416号 三峰网旗下网站