• log4net


    http://logging.apache.org/log4net/

    配置如下:

    在 <configSections>节点配置如下:

       <configSections>
        <section name ="log4net" type="System.Configuration.IgnoreSectionHandler"/>
      </configSections>

    另外,还要在顶级节点<configuration>下增加<log4net>子节点;在<log4net>节点下增加<appender>子节点,每个子节点代表一种记录日志的方式。

    View Code
    1 <log4net>
    2 <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
    3 <file value="D:log4netfile.txt" />
    4 <appendToFile value="true" />
    5 <rollingStyle value="Date" />
    6 <datePattern value="yyyyMMdd-HH:mm:ss" />
    7 <layout type="log4net.Layout.PatternLayout">
    8 <footer value="by Lee yi" />
    9 <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline耗费时间%run time当前日志名称%class" />
    10 </layout>
    11 </appender>
    12 <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    13 <layout type="log4net.Layout.PatternLayout">
    14 <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    15 </layout>
    16 </appender>
    17 <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
    18 <layout type="log4net.Layout.PatternLayout">
    19 <conversionPattern value="%date[%thread]%-5level%logger[%property{NDC}]-%message%newline"/>
    20 </layout>
    21 </appender>
    22 <appender name="AdoNetAppender_Access" type="log4net.Appender.AdoNetAppender">
    23 <connectionString value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:log4net.mdb"/>
    24 <commandText value="Insert into LogDetails([LogDate],[Thread],[Level],[Logger],[Message]) values(@logDate,@thread,@logLevel,@logger,@message)"/>
    25 <parameter>
    26 <parameterName value="@logDate"/>
    27 <dbType value="String"/>
    28 <size value="240"/>
    29 <layout type="log4net.Layout.PatternLayout">
    30 <conversionPattern value="%date"/>
    31 </layout>
    32 </parameter>
    33 <parameter>
    34 <parameterName value="@thread"/>
    35 <dbType value="String"/>
    36 <size value="240"/>
    37 <layout type="log4net.Layout.PatternLayout">
    38 <conversionPattern value="%thread"/>
    39 </layout>
    40 </parameter>
    41 <parameter>
    42 <parameterName value="@logLevel"/>
    43 <dbType value="String"/>
    44 <size value="240"/>
    45 <layout type="log4net.Layout.PatternLayout">
    46 <conversionPattern value="%level"/>
    47 </layout>
    48 </parameter>
    49 <parameter>
    50 <parameterName value="@logger"/>
    51 <dbType value="String"/>
    52 <size value="240"/>
    53 <layout type="log4net.Layout.PatternLayout">
    54 <conversionPattern value="%logger"/>
    55 </layout>
    56 </parameter>
    57 <parameter>
    58 <parameterName value="@message"/>
    59 <dbType value="String"/>
    60 <size value="240"/>
    61 <layout type="log4net.Layout.PatternLayout">
    62 <conversionPattern value="%message"/>
    63 </layout>
    64 </parameter>
    65 </appender>
    66 <root>
    67 <level value="WARN"/>
    68 <appender-ref ref="LogFileAppender"/>
    69 <appender-ref ref="ConsoleAppender"/>
    70 <appender-ref ref="EventLogAppender"/>
    71 </root>
    72 <logger name="testApp.Logging">
    73 <level value="DEBUG"/>
    74 </logger>
    75 </log4net>

    Appender节点的name属性值有如下一下,仅列出经常用的属性值:

    AdoNetAppender:利用ADO.NET记录到数据库的日志;

    ConsoleAppender:将日志输出到控制台;

    EventLogAppender:将日志写到Windows Event Log;

    使用log4net中可能会使用到一些参数:

    %m(message):输出的日志消息;

    %n(new line):换行;

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

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

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

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

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

    %of(file):输出语句所在文件名;

    %l(line):输出语句所在的行号.

    %数字:表示该项的最小长度,如果不够,则用空格填充,如"%-5level"表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充。

    把数据存储到Access数据库中,代码如下:

    View Code
    1 static void Main(string[] args)
    2 {
    3 ILog log = log4net.LogManager.GetLogger("AdoNetAppender_Access");
    4 log.Error("error", new Exception("发生了一个异常"));
    5 log.Fatal("fatal", new Exception("发生了一个致命错误"));
    6 log.Info("info");
    7 log.Debug("debug");
    8 log.Warn("warn");
    9 Console.WriteLine("日志记录完毕。");
    10 }

    root修改如下:

        <root>
          <level value="WARN"/>
          <appender-ref ref="AdoNetAppender_Access"/>//日志保存在Access数据库中
          <!--<appender-ref ref="LogFileAppender"/>//保存在文件中
          <appender-ref ref="ConsoleAppender"/> //输出到控制台中
          <appender-ref ref="EventLogAppender"/>-->
        </root>

  • 相关阅读:
    【Yom框架】漫谈个人框架的设计之一:是IRepository还是IRepository<T>?
    【NET】Winform用户控件的初步封装之列表页控件
    【C#】Smtp发送邮件
    c# http请求封装
    js 时区转换
    c# http请求接口
    netcore 中间件记录日志
    netcore 调用log4net
    netcore 从api下载文件并直接返回
    netcore 从api下载文件到本地
  • 原文地址:https://www.cnblogs.com/cpetcoandy/p/2128552.html
Copyright © 2020-2023  润新知