windows服务与log4net应用

有时候我们需要用到window服务来执行定时任务,然后配合log4net记录程序运行情况,这里简单记录下配置的整个过程以及注意要点:

一.添加windows服务

1.设计页面,右键添加安装程序

2.右键serviceInstaller,修改几个属性:StartType选择Automatic,跟随系统启动

3.右键serviceProcessInstaller1,修改account属性:为LocalSystem

4.修改service1.cs服务名称与serviceInstall中服务名称的属性一致

5.service1.cs代码中,添加自己的定时任务代码,

protected override void OnStart(string[] args)
{
     ReportJobScheduler.Start();
}

protected override void OnStop()
{

}

 

 

二.加入log4Net记录日志

1.nuget包工具给项目添加log4Net

2.修改配置文件App.config,添加相关节点

 3.最容易忽视且最重要一点,Properties下的AssemblyInfo.cs文件添加如下代码:

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

 

控制台应用程序中也要注意别忘记修改AssemblyInfo.cs文件。

 4、windows服务在Program.cs的Main方法中添加如下代码:

string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
string configFilePath = assemblyDirPath + "\\log4net.config";

XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));

 

PS:如果是Web程序,Global配置文件下,Application_Start方法中添加代码(log4net.config配成了一个单独文件):

protected void Application_Start(object sender, EventArgs e)
 {
            log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath("/log4net.config")));
 }

 三、安装和卸载服务

1.安装与运行:

进入如下目录:C:\Windows\Microsoft.NET\Framework64\v4.0.30319,将InstallUtil.exe复制到改windows服务bin/debug下:

2.cmd命令窗口(管理员身份运行),进入到该debug目录下,之后的安装,运行命令如下:

安装:InstallUtil.exe WindowsDemo0205.exe

卸载:InstallUtil.exe -u WindowsDemo0205.exe

运行:net start MyService

停止:net stop MyService

 

异常问题:

在windows 安装服务报异常:System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security

 

方法:以管理员身份运行命令提示符即可

posted @ 2019-07-16 10:15  诸葛风流  阅读(443)  评论(0编辑  收藏  举报