• 使用Log4net日志组件


      最近自己在做一个小东西,用log4net日志组件来记录日志,自己在前人的基础上加工总结,拿出来给大家分享一下,不足之处大拿们使劲拍砖,感激不尽!

    第一步:配置config文件

        为了方便管理,把log4net的配置文件从web.config中分离,新建一个名为log4net.config的文件,内容如下:

    View Code
      1 <?xml version="1.0" encoding="UTF-8"?>
    2 <log4net debug="false">
    3
    4 <!--按日期分割日志文件 一天一个-->
    5 <appender name="LogFileAppenderByDate" type="log4net.Appender.RollingFileAppender" >
    6
    7 <!--是否续写-->
    8 <param name="AppendToFile" value="true" />
    9 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
    10 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
    11 <param name="StaticLogFileName" value="true" />
    12 <!--保存路径-->
    13 <param name="File" value="F:\Log\\" />
    14 <param name="DatePattern" value="yyyy-MM-dd.LOG" />
    15 <param name="StaticLogFileName" value="false" />
    16 <param name="RollingStyle" value="Date" />
    17 <layout type="log4net.Layout.PatternLayout">
    18 <param name="ConversionPattern" value="时间:%d %n级别:%level %n类名:%c%n文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
    19 </layout>
    20 </appender>
    21
    22 <!--按日志容量分割日志文件 10KB一个-->
    23 <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender" >
    24
    25 <!--是否续写-->
    26 <param name="AppendToFile" value="true" />
    27 <!--最小锁定模型以允许多个进程可以写入同一个文件-->
    28 <param name="LockingModel" value="log4net.Appender.FileAppender.MinimalLock" />
    29
    30 <param name="StaticLogFileName" value="true" />
    31
    32 <!--按照文件的大小进行变换日志文件-->
    33 <param name="RollingStyle" value="Size" />
    34 <param name="File" value="LogData\\log.txt" />
    35 <!--单个文件最大数量 好像只有在 按Size分割时有效-->
    36 <param name="MaximumFileSize" value="10KB"/>
    37 <!--保留的log文件数量 超过此数量后 自动删除之前的 好像只有在 按Size分割时有效-->
    38 <param name="MaxSizeRollBackups" value="2" />
    39
    40 <param name="StaticLogFileName" value="false" />
    41 <layout type="log4net.Layout.PatternLayout">
    42 <param name="ConversionPattern" value="发生时间:%d %n事件级别:%level %n相关类名:%c%n程序文件:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n" />
    43 </layout>
    44 </appender>
    45 <!--记录日志到数据库-->
    46 <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    47 <bufferSize value="100" />
    48 <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    49 <connectionString value="data source=GAS-HECHEN;initial catalog=dsc141051_db;integrated security=false;persist security info=True;User ID=sa;Password=000000" />
    50 <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
    51 <parameter>
    52 <parameterName value="@log_date" />
    53 <dbType value="DateTime" />
    54 <layout type="log4net.Layout.RawTimeStampLayout" />
    55 </parameter>
    56 <parameter>
    57 <parameterName value="@thread" />
    58 <dbType value="String" />
    59 <size value="255" />
    60 <layout type="log4net.Layout.PatternLayout">
    61 <conversionPattern value="%thread" />
    62 </layout>
    63 </parameter>
    64 <parameter>
    65 <parameterName value="@log_level" />
    66 <dbType value="String" />
    67 <size value="50" />
    68 <layout type="log4net.Layout.PatternLayout">
    69 <conversionPattern value="%level" />
    70 </layout>
    71 </parameter>
    72 <parameter>
    73 <parameterName value="@logger" />
    74 <dbType value="String" />
    75 <size value="255" />
    76 <layout type="log4net.Layout.PatternLayout">
    77 <conversionPattern value="%logger" />
    78 </layout>
    79 </parameter>
    80 <parameter>
    81 <parameterName value="@message" />
    82 <dbType value="String" />
    83 <size value="4000" />
    84 <layout type="log4net.Layout.PatternLayout">
    85 <conversionPattern value="%message" />
    86 </layout>
    87 </parameter>
    88 <parameter>
    89 <parameterName value="@exception" />
    90 <dbType value="String" />
    91 <size value="2000" />
    92 <layout type="log4net.Layout.ExceptionLayout" />
    93 </parameter>
    94 </appender>
    95 <root>
    96 <level value="INFO" />
    97 <!--启用按日期分割-->
    98 <appender-ref ref="LogFileAppenderByDate" />
    99 <!--启用按容量分割-->
    100 <!--<appender-ref ref="LogFileAppenderBySize" />-->
    101 <!--启用保存到数据库-->
    102 <!--<appender-ref ref="AdoNetAppender" />-->
    103 </root>
    104 </log4net>

        内容主要配置日志的输出方式:1、按日期生成  2、按文件大小 生成  3、把日志保存到数据库文件。最后root节点是设置启动哪种方式来保存日志,以及设置日志的级别

    第二步:把Log4Net.config文件添加到项目启动项

            在website或winform 项目下的Global.asax.cs类的Application_Start()方法下添加加载日志配置文件代码

    View Code
    1        void Application_Start(object sender, EventArgs e)
    2 {
    3 // Code that runs on application startup
    4 log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("/Log4Net.config")));
    5 }

    第三步:在类库里添加日志帮助类LogHelper

            添加辅助类的目的:1、方便各个类库及项目直接调用,不用每个项目里都添加log4net的引用

                                    2、为了支持根据自己配置的日志输出格式和输出方式 输出日志(configPath 用来传入日志配置路径)

    View Code
     1     /// <summary>
    2 /// 日志辅助类
    3 /// </summary>
    4 public class LogHelper
    5 {
    6 private static ILog log;
    7 private static LogHelper logHelper = null;
    8 /// <summary>
    9 /// 初始化
    10 /// </summary>
    11 /// <returns></returns>
    12 public static ILog GetInstance()
    13 {
    14 logHelper = new LogHelper(null);
    15
    16 return log;
    17 }
    18 /// <summary>
    19 /// 初始化
    20 /// </summary>
    21 /// <param name="configPath"></param>
    22 /// <returns></returns>
    23 public static ILog GetInstance(string configPath)
    24 {
    25 logHelper = new LogHelper(configPath);
    26
    27 return log;
    28 }
    29 /// <summary>
    30 /// 构造函数
    31 /// </summary>
    32 /// <param name="configPath"></param>
    33 private LogHelper(string configPath)
    34 {
    35 if (!string.IsNullOrEmpty(configPath))
    36 {
    37 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    38 log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(configPath));
    39 }
    40 else
    41 {
    42 log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    43 }
    44 }
    45
    46 }


    第四步:在项目里应用日志

               

    View Code
    ILog log = LogHelper.GetInstance();
    log.Fatal("Fatal");

    或者

    ILog log = LogHelper.GetInstance(configPath);
    log.Fatal("diaoxw");

    转载:

  • 相关阅读:
    2014年工作中遇到的20个问题:120-140
    迷茫与飞跃:9月开始,明确了研究方向,功力提升明显,成绩比较显著
    迷茫与飞跃:9月开始,明确了研究方向,功力提升明显,成绩比较显著
    Freemarker中的日期转换
    Freemarker中的日期转换
    Java实现统计方案
    Java实现统计方案
    Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
    Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
    Java实现【USACO】1.1.2 贪婪的礼物送礼者 Greedy Gift Givers
  • 原文地址:https://www.cnblogs.com/zzcong/p/2346859.html
Copyright © 2020-2023  润新知