log4net的使用

来源:互联网 发布:欢乐百世淘宝 编辑:程序博客网 时间:2024/05/17 00:55

本文转自http://www.cnblogs.com/puzi0315/archive/2012/08/08/2628966.html

Log4net监控服务状态

对于比较复杂的逻辑,可以使用log4net来记录程序的执行过程中的关键数据,以此来监控服务的逻辑是否完备。

1.在项目中引入log4net.dll组件(或者直接Nuget安装)

2.在App.congfig中做如下修改(或者单独建立一个log4net.config文件

如果是单独建立log4net.config文件,则在程序开始处(如:Global.asax中Application_Start)添加方法

如果是winform项目,则设置log4net.config的属性》复制到输出目录选项 改成始终复制

 private static void InitLog4Net()        {            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log4net.config");            XmlConfigurator.ConfigureAndWatch(logCfg);        }

<configSections></configSections>加入如下内容:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>


在根结点下加入如下内容:

复制代码
<log4net>         <logger name="Log">              <level value="INFO"/>              <appender-ref ref="RollingLog"/>         </logger>         <logger name="Err">              <level value="ERROR"/>              <appender-ref ref="RollingErr"/>         </logger>         <appender name="RollingLog" type="log4net.Appender.RollingFileAppender">              <file value="WindowsServiceLog\"/>              <appendToFile value="true"/>              <rollingStyle value="Date"/>              <datePattern value="yyyyMMdd'.txt'"/>              <staticLogFileName value="false"/>              <layout type="log4net.Layout.PatternLayout">                   <conversionPattern value="%d[%p][%t]%c %m%n"/>              </layout>              <filter type="log4net.Filter.LevelRangeFilter">                   <param name="LevelMin" value="INFO"/>                   <param name="LevelMax" value="INFO"/>              </filter>         </appender>         <appender name="RollingErr" type="log4net.Appender.RollingFileAppender\">              <file value="WindowsServiceErr\"/>              <appendToFile value="true"/>              <rollingStyle value="Date"/>              <datePattern value="yyyyMMdd'.txt'"/>              <staticLogFileName value="false"/>              <layout type="log4net.Layout.PatternLayout">                   <conversionPattern value="%d[%p][%t]%c %m%n"/>              </layout>              <filter type="log4net.Filter.LevelRangeFilter">                   <param name="LevelMin" value="ERROR"/>                   <param name="LevelMax" value="ERROR"/>              </filter>         </appender></log4net>3.新建LogHelp.cs文件using System;using System.Collections.Generic;using System.Text;using log4net;using System.Diagnostics;using System.Reflection; namespace WinService{

public class LogHelper
{
private static readonly ILog logInfo = LogManager.GetLogger("Log");
private static readonly ILog logErr = LogManager.GetLogger("Err");
/// <summary>
/// 记录正常的消息
/// </summary>
/// <param name="msg">消息内容</param>
public static void info(string msg)
{
logInfo.Info(msg);
}
/// <summary>
/// 记录异常信息
/// </summary>
/// <param name="msg">异常信息内容</param>
public static void error(string msg)
{
StackTrace stackTrace = new StackTrace();
StackFrame stackFrame = stackTrace.GetFrame(1);
MethodBase methodBase = stackFrame.GetMethod();
logErr.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg);
}
}

}
复制代码

重新生成项目,在项目的关键地方可以使用LogHelper.info()函数记录正常执行的关键信息,用LogHelper.error()函数记录抛出的异常信息。

比如:

 

复制代码
protectedoverridevoid OnStart(string[] args)        {            // TODO: 在此处添加代码以启动服务。            try            {                theTimer.Start();                timespan = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["timespan"]);                theTimer.Interval = timespan * 60 * 1000;//间隔时间为五分钟,取前后2.5分钟                LogHelper.info("WinService服务启动:" + DateTime.Now.ToString());            }            catch (Exception ex)            {                LogHelper.error("WinService服务启动错误:"+ex.Message);            }                    }
复制代码

在项目的bin\Debug目录下可以看到两个文件夹:WindowsServiceErr和WindowsServiceLog,分别存放信息日志和错误日志,结合相关日志可以帮助分析系统运行是否正常。如果看不到两个文件夹,可以在项目的Properties\AssemblyInfo.cs文件中加入如下内容:

    [assembly: log4net.Config.XmlConfigurator(Watch = true)]

0 0
原创粉丝点击