zoukankan      html  css  js  c++  java
  • Topshelf创建Windows服务

    入门例子

    using log4net;
    using System;
    using System.Timers;
    using Topshelf;
    
    namespace ConsoleAppTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                log4net.Config.XmlConfigurator.Configure();
                HostFactory.Run(x =>
                {
                    x.Service<TownCrier>();
                    x.RunAsLocalSystem(); // 服务使用NETWORK_SERVICE内置帐户运行。身份标识,有好几种方式,如:
                    //x.RunAs("username", "password"); x.RunAsPrompt(); x.RunAsNetworkService(); 
                    x.SetServiceName("ConsoleAppTest服务名称");
                    x.SetDisplayName("ConsoleAppTest显示名称");
                    x.SetDescription("ConsoleAppTest服务描述");
                });
            }
        }
    
        public class TownCrier : ServiceControl
        {
            readonly Timer _timer;
            readonly ILog _log = log4net.LogManager.GetLogger("wolflogInfo");
            public TownCrier()
            {
                //10秒运行一次
                _timer = new Timer(10000) { AutoReset = true };
                _timer.Elapsed += (sender, eventArgs) => _log.Info(DateTime.Now);
            }
    
            bool ServiceControl.Start(HostControl hostControl)
            {
                _log.Info("ConsoleAppTest is Started");
                _timer.Start();
                return true;
            }
    
            bool ServiceControl.Stop(HostControl hostControl)
            {
                _log.Info("ConsoleAppTest is Stop");
                _timer.Start();
                return true;
            }
        }
    
    }

    Log4的config配置

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
      </startup>
      <log4net>
        <logger name="wolflogInfo">
          <level value="Info" />
          <appender-ref ref="wolflogInfoFileAppender" />
        </logger>
        <logger name="wolflogError">
          <level value="Error" />
          <appender-ref ref="wolflogErrorFileAppender" />
        </logger>
        <logger name="wolflogALL">
          <level value="ALL" />
          <appender-ref ref="wolflogALLFileAppender" />
        </logger>
        <!-- 绑定使用的名称 -->  
        <appender name="wolflogInfoFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <!--输出文件夹路径-->
          <param name="File" type="" value="App_Data/Log/Info/" />
          <param name="AppendToFile" value="true" />
          <param name="RollingStyle" value="Date" />
          <!--文件名称命名规则-->
          <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
          <param name="StaticLogFileName" value="false" />
          <param name="MaxSizeRollBackups" value="62" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <!--输出头-->
            <param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
          </layout>
        </appender>
        <appender name="wolflogErrorFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <param name="File" type="" value="App_Data/Log/Error/" />
          <param name="AppendToFile" value="true" />
          <param name="RollingStyle" value="Date" />
          <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
          <param name="StaticLogFileName" value="false" />
          <param name="MaxSizeRollBackups" value="62" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
          </layout>
        </appender>
        <appender name="wolflogALLFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <param name="File" type="" value="App_Data/Log/ALL/" />
          <param name="AppendToFile" value="true" />
          <param name="RollingStyle" value="Date" />
          <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
          <param name="StaticLogFileName" value="false" />
          <param name="MaxSizeRollBackups" value="62" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="ConversionPattern" value="%n[%d] %c %n%m%n%n" />
          </layout>
        </appender>
      </log4net>
    </configuration>

    安装运行命令

    安装:ConsoleAppTest install
    卸载:ConsoleAppTest uninstall
    启动:ConsoleAppTest start
    停止:ConsoleAppTest stop

    需要用管理员运行程序

    多实例安装

    ConsoleAppTest –instance "ConsoleAppTest2" install
    ConsoleAppTest –instance "ConsoleAppTest2" uninstall
    也可以 sc delete  删除

  • 相关阅读:
    allure2生成html报告
    H5如何测试?
    请描述什么是性能测试、什么是负载测试、什么是压力测试?
    Web/App端自动化测试对比
    如果给你一台电梯,请问你如何测试它
    PC、APP、H5三端测试的相同与不同
    App测试工具选择
    app测试和web测试的区别
    unittest单元测试框架详解
    Jmeter之逻辑控制器(Logic Controller)
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/8405163.html
Copyright © 2011-2022 走看看