zoukankan      html  css  js  c++  java
  • windows服务-log4net的使用

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

    Log4net监控服务状态

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

    1.在项目中引入log4net.dll组件;

    2.在App.congfig中做如下修改

    <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="WindowsServiceLogWindowsServiceLog"/>
                  <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="WindowsServiceErrWindowsServiceErr"/>
                  <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);
                }
                
            }
    复制代码

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

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

  • 相关阅读:
    【BZOJ4517】[SDOI2016] 排列计数(组合数)
    【BZOJ4818】[SDOI2017] 序列计数(矩乘水题)
    【BZOJ4872】[SHOI2017] 分手是祝愿(思维+动态规划)
    【BZOJ4821】[SDOI2017] 相关分析(线段树)
    【BZOJ2710】[Violet 1] 追风者(计算几何)
    【BZOJ3199】[SDOI2013] escape(半平面交+BFS)
    【BZOJ1007】[HNOI2008] 水平可见直线(几何)
    【BZOJ3689】异或之(可持久化Trie树)
    【BZOJ3261】最大异或和(可持久化Trie树水题)
    NOI Online #3 提高组 小记
  • 原文地址:https://www.cnblogs.com/tongdengquan/p/6090469.html
Copyright © 2011-2022 走看看