首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

一个系统日志EventLog的示例

2014-03-14 
一个系统日志EventLog的示例


[c-sharp] view plaincopyprint?
  1. using System;  

  2. using System.Collections;  

  3. using System.ComponentModel;  

  4. using System.Data;  

  5. using System.Diagnostics;  

  6. using System.ServiceProcess;  

  7. using System.Net;  

  8. using System.Net.Sockets;  

  9.  

  10. namespace wsPing  

  11. {  

  12.    public class pingService : System.ServiceProcess.ServiceBase  

  13.    {  

  14.        public System.Diagnostics.EventLog evLog;  

  15.        private System.Timers.Timer TimerPing;  

  16.  

  17.        /**//// <summary>  

  18.        /// 必需的设计器变量。  

  19.        /// </summary>  

  20.        private System.ComponentModel.Container components = null;  

  21.        //ping 一个页面地址*********************************  

  22.        int iPingInterval =180000;//3分钟  

  23.        string sPingAddress="www.reaDer8.cn";  

  24.        //**************************************************  

  25.  

  26.        public pingService()  

  27.        {  

  28.            // 该调用是 Windows.Forms 组件设计器所必需的。  

  29.            InitializeComponent();  

  30.            // TODO: 在 InitComponent 调用后添加任何初始化  

  31.            //如果不存在日志************************************  

  32.            if(!System.Diagnostics.EventLog.SourceExists("logService"))  

  33.            {  

  34.                EventLog.CreateEventSource("logService","logServiceLog");  

  35.            }  

  36.            this.evLog.Source="logService";  

  37.            //如果要重新命名,必须重新启动计算机  

  38.            //this.evLog.Log="logServiceLog";  

  39.            //**************************************************  

  40.              

  41.        }  

  42.        // 进程的主入口点  

  43.        static void Main()  

  44.        {  

  45.            System.ServiceProcess.ServiceBase[] ServicesToRun;  

  46.      

  47.            // 同一进程中可以运行多个用户服务。若要将  

  48.            //另一个服务添加到此进程,请更改下行  

  49.            // 以创建另一个服务对象。例如,  

  50.            //  

  51.            //   ServicesToRun = New System.ServiceProcess.ServiceBase[] {new Service1(), new MySecondUserService()};  

  52.            //  

  53.            ServicesToRun = new System.ServiceProcess.ServiceBase[] { new pingService() };  

  54.            System.ServiceProcess.ServiceBase.Run(ServicesToRun);  

  55.        }  

  56.        /**//// <summary>  

  57.        /// 设计器支持所需的方法 - 不要使用代码编辑器  

  58.        /// 修改此方法的内容。  

  59.        /// </summary>  

  60.        private void InitializeComponent()  

  61.        {  

  62.            this.evLog = new System.Diagnostics.EventLog();  

  63.            this.TimerPing = new System.Timers.Timer();  

  64.            ((System.ComponentModel.ISupportInitialize)(this.evLog)).BeginInit();  

  65.            ((System.ComponentModel.ISupportInitialize)(this.TimerPing)).BeginInit();  

  66.            //  

  67.            // TimerPing  

  68.            //  

  69.            this.TimerPing.Interval = 60000;  

  70.            this.TimerPing.Elapsed += new System.Timers.ElapsedEventHandler(this.TimerPing_Elapsed);  

  71.            //  

  72.            // pingService  

  73.            //  

  74.            this.CanHandlePowerEvent = true;  

  75.            this.CanPauseAndContinue = true;  

  76.            this.CanShutdown = true;  

  77.            this.ServiceName = "pingService";  

  78.            ((System.ComponentModel.ISupportInitialize)(this.evLog)).EndInit();  

  79.            ((System.ComponentModel.ISupportInitialize)(this.TimerPing)).EndInit();  

  80.        }  

  81.        /**//// <summary>  

  82.        /// 清理所有正在使用的资源。  

  83.        /// </summary>  

  84.        protected override void Dispose( bool disposing )  

  85.        {  

  86.            if( disposing )  

  87.            {  

  88.                if (components != null)  

  89.                {  

  90.                    components.Dispose();  

  91.                }  

  92.            }  

  93.            base.Dispose( disposing );  

  94.        }  

  95.        /**//// <summary>  

  96.        /// 设置具体的操作,以便服务可以执行它的工作。  

  97.        /// </summary>  

  98.        protected override void OnStart(string[] args)  

  99.        {  

  100.            // TODO: 在此处添加代码以启动服务。  

  101.            this.evLog.WriteEntry("pingService is Starting……………………………");  

  102.            TimerPing.Interval=this.iPingInterval;  

  103.            this.TimerPing.Enabled=true;  

  104.        }  

  105.        /**//// <summary>  

  106.        /// 停止此服务。  

  107.        /// </summary>  

  108.        protected override void OnStop()  

  109.        {  

  110.            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。  

  111.            this.evLog.WriteEntry("pingService is Stopping……………………………");  

  112.            this.TimerPing.Enabled=false;  

  113.        }  

  114.        /**//// <summary>  

  115.        /// 暂停  

  116.        /// </summary>  

  117.        protected override void OnPause()  

  118.        {  

  119.            this.evLog.WriteEntry("pingService is Pausing……………………………");  

  120.        }  

  121.        /**//// <summary>  

  122.        ///继续  

  123.        /// </summary>  

  124.        protected override void OnContinue()  

  125.        {  

  126.            this.evLog.WriteEntry("pingService is Continuing……………………………");  

  127.        }  

  128.        private void TimerPing_Elapsed(object sender, System.Timers.ElapsedEventArgs e)  

  129.        {  

  130.            Pinger pi=new Pinger();  

  131.            if(pi.Ping(this.sPingAddress)<1)  

  132.            {  

  133.                evLog.WriteEntry(sPingAddress +" does not respond.");  

  134.            }  

  135.        }  

  136.    }  

  137.    public  class Pinger  

  138.    {  

  139.        public int  Ping (string addr)  

  140.        {  

  141.            Socket sck=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);  

  142.            try  

  143.            {  

  144.                System.Net.IPHostEntry ipInfo=System.Net.Dns.Resolve(addr);  

  145.                IPEndPoint ipe=new IPEndPoint(ipInfo.AddressList[0],8);  

  146.                sck.Connect(ipe);  

  147.            }  

  148.            catch  

  149.            {  

  150.                return -1;  

  151.            }  

  152.            return 1;  

  153.        }  

  154.    }  

  155. }  


热点排行