码迷,mamicode.com
首页 > Web开发 > 详细

Log4Net

时间:2018-12-18 17:22:47      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:ima   计数   ESS   ase   cti   lin   win   ext   文件大小   

Web.config-configuration节点内

  <appSettings>
    <!--日志记录器选择配置,提供给LogManager使用,根据配置记录返回不同日志记录器
        Log.Log4Net=Log4NetLogger,Neton.Log4Key=DbLogger
        Log.Log4Net需要对<log4net>进行配置
        Neton.Log4Key需要对Log4Key进行配置-->
    <add key="LoggerName" value="Log.Log4Net" />

    <!-- Log4Key的配置 (开始) -->
    <!--日志来源,通常是应用程序名称。如:绩效管理。-->
    <add key="Log4Key.Source" value="程序名称" />
    <!--错误级别编号,0=致命错误,1=紧急错误,2=普通错误,3=没有错误,4=成功的级别-->
    <add key="Log4Key.Level" value="2" />
    <!--日志类型,0=使用Windows的日志,1=使用自定义数据库的日志,2=不纪录日志-->
    <add key="Log4Key.Type" value="1" />
    <!--Windows事件日志的类别名称-->
    <add key="Log4Key.CategoryName" value="程序名称" />
    <!--数据库提供者-->
    <add key="Log4Key.Provider" value="server=数据库地址;uid=sa;pwd=密码;database=数据库名称;Pooling=true" />
    <!--数据库日志错误代码编号,0表示无错误代码,正数表示数据库中已经存在的错误代码编号,负数表示抛出异常的错误状态(如果不存在这个错误状态对应的错误代码,数据库会自动创建)。-->
    <add key="Log4Key.Code" value="0" />
    <!--数据库日志类别编号,0表示无类别,正数表示数据库中已经存在的类别编号。-->
    <add key="Log4Key.CategoryNo" value="0" />
    <!-- Log4Key的配置 (结束) -->
  </appSettings>

  <log4net>
    <!--定义输出到文件中-->
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <!--定义文件存放位置-当前项目中文件目录-->
      <file value="File/" />
      <!--是否追加到文件-->
      <appendToFile value="true" />
      <!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
      <rollingStyle value="Date" />
      <!--使用Unicode编码-->
      <Encoding value="UTF-8" />
      <!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
      <param name="MaxSizeRollBackups" value="10" />
      <!--是否只写到一个文件中-->
      <param name="StaticLogFileName" value="false" />
      <!--按日期产生文件夹和文件名[在日期方式与混合方式下使用]-->
      <!--此处按日期产生文件夹,文件名固定。注意" 的位置-->
      <param name="DatePattern" value=""newsinformation"yyyy-MM-dd".log"" />
      <!--每个文件的大小。只在混合方式与文件大小方式下使用。
          超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。
          可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
      <param name="maximumFileSize" value="10MB" />
      <!--计数类型为1,2,3…-->
      <param name="CountDirection" value="1" />
      <!--过滤设置,LevelRangeFilter为使用的过滤器。 -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="WARN" />
        <param name="LevelMax" value="FATAL" />
      </filter>
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--样例:记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger
        当前机器名:%property%n当前机器名及登录用户:%username %n 
        记录位置:%location%n 消息描述:%property{Message}%n
        异常:%exception%n 消息:%message%newline%n%n" -->
        <conversionPattern value="%date [%thread] %-5level %username %message%newline" />
      </layout>
    </appender>
    <!--定义输出到控制台命令行中-->
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <!--定义输出到windows事件中-->
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <!--定义输出到数据库中-->
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <!--过滤设置,LevelRangeFilter为使用的过滤器。 -->
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="FATAL" />
      </filter>
      <!--BufferSize为缓冲区大小,只有日志记录超设定值才会一块写入到数据库-->
      <bufferSize value="1" />
      <!--引用-->
      <connectionType value="System.Data.SqlClient.SqlConnection,System.Data, Version=1.0.3300.0, Culture=neutral,PublicKeyToken=b77a5c561934e089" />
      <!--连接数据库字符串-->
      <connectionString value="server=数据库地址;uid=sa;pwd=密码;database=数据库名称;Pooling=true" />
      <commandText value="INSERT INTO 数据库表名称 ([Event_Level],[Remark],[CreateTime],[Event_Source]) VALUES (1,@message,@logDate, ‘程序名称‘)" />
      <!--定义各个参数-->
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="24000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message %exception" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logDate" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
    </appender>
    <!--定义日志的输出媒介,下面定义日志以四种方式输出。也可以下面的按照一种类型或其他类型输出。-->
    <root>
      <!--文件形式记录日志-->
      <appender-ref ref="LogFileAppender" />
      <!--控制台控制显示日志-->
      <!--<appender-ref ref="ConsoleAppender" />-->
      <!--Windows事件日志-->
      <!--<appender-ref ref="EventLogAppender" />-->
      <!--数据库-->
      <appender-ref ref="AdoNetAppender" />
    </root>
    <logger name="Log.Log4Net">
      <level value="WARN" />
    </logger>
  </log4net>

程序简单调用

            ILog log = LogManager.GetLogger(ConfigurationManager.AppSettings["LoggerName"]);

            //记录错误日志
            log.Error("error", new Exception("这个文本会记录在数据库Remark也会在文本"));
            ////记录严重错误
            log.Fatal("fatal", new Exception("这个文本会记录在数据库Remark也会在文本"));
            ////记录警告信息
            log.Warn("warn");

  

Log4Net

标签:ima   计数   ESS   ase   cti   lin   win   ext   文件大小   

原文地址:https://www.cnblogs.com/liyiboke/p/10137949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!