本文转自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="WindowsServiceLog\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\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)]

windows服务-log4net的使用的更多相关文章

  1. 使用Topshelf开发Windows服务、log4net记录日志

    开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...

  2. Windows服务使用log4net记录日志

    该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇. 比较流行的日志组件有以下四种,Topshelf都有相应的组件提供 log4net NL ...

  3. Quartz任务调度 服务日志+log4net打印日志+制作windows服务

    引言 现在许多的项目都需要定时的服务进行支撑,而我们经常用到的定时服务就是Quartz任务调度了.不过我们在使用定时Job进行获取的时候,有时候我们就需要记录一下自定义的日志,甚至我们还会对执行定时J ...

  4. windows服务与log4net应用

    有时候我们需要用到window服务来执行定时任务,然后配合log4net记录程序运行情况,这里简单记录下配置的整个过程以及注意要点: 一.添加windows服务 1.设计页面,右键添加安装程序

  5. C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件

    使用VS2012开发Windows服务,需要使用Log4net日志组件记录业务情况,但是始终生成不了日志文件. /// <summary> /// 入口方法 /// </summar ...

  6. 如何为Windows服务增加Log4net和EventLog的日志功能。

    一.简介 最近在做一个项目的时候,需要该项目自动启动.自动运行,不需要认为干预.不用说,大家都知道用什么技术,那就是 Windows服务.在以前的Net Framework 平台下,Windows 服 ...

  7. Quartz.NET Windows 服务示例

    想必大家在项目中处理简单的后台持续任务或者定时触发任务的时候均使用 Thread 或者 Task 来完成,但是项目中的这种需求一旦多了的话就得将任务调度引入进来了,那今天就简单的介绍一下 Quartz ...

  8. 使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  9. 使用Topshelf 开发windows服务

    在业务系统中,我们为了调度一些自动执行的任务或从队列中消费一些消息,所以基本上都会涉及到后台服务的开发.如果用windows service开发,非常不爽的一件事就是:调试相对麻烦,而且你还需要了解 ...

随机推荐

  1. 微信内置浏览器私有接口WeixinJSBridge介绍(转)

    这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友.分享函数.隐藏工具栏.隐藏三个点按钮等功能,需要的朋友可以参考下 微信网页进入,右上角有三个小点,没错, ...

  2. .net C# 苹果消息推送 工具类

    public class AppleAPNSMessage { /// <summary> /// 苹果信息推送 证书 路径(注意测试版跟正式发布版证书上不一样) /// </sum ...

  3. Oracle sql 中的字符(串)替换与转换[转载]

    1.REPLACE 语法:REPLACE(char, search_string,replacement_string) 用法:将char中的字符串search_string全部转换为字符串repla ...

  4. 超链接解决头部fixed问题

    ///////////超链接解决头部fixed问题 $('a[href*=#]').click(function () { var top1 = $(".header").heig ...

  5. underscore.js中的节流函数debounce及trottle

    函数节流   throttle and debounce的相关总结及想法 一开始函数节流的使用场景是:放止一个按钮多次点击多次触发一个功能函数,所以做了一个clearTimeout setTimeou ...

  6. PCA数学原理

    PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降 ...

  7. 用VulApps快速搭建各种漏洞环境

    项目主页 https://github.com/Medicean/VulApps 项目介绍 收集各种漏洞环境,统一采用 Dockerfile 形式.DockerHub 在线镜像地址 获取并使用相关镜像 ...

  8. Dubbo集成步骤

    dubbo协议实现与webservice一样的效果,用于服务调用之间的接口.dubbo可在中间实现真正意义上的中间调用管理,是一个中间管理系统. demo:http://www.devnote.cn/ ...

  9. Maven搭建springMVC+spring+hibernate环境

    这次不再使用struts2做控制器,采用spring自己的springMVC框架实现. 首先,改写pom.xml文件,不需要struts2的相关jar了. pom.xml <project xm ...

  10. hibernate与spring整合实现transaction

    实现transaction时出现了大大小小的问题,这里会一一详解. 先贴出applicationContext.xml <?xml version="1.0" encodin ...