windows service使用log4net 记录日志
最近写了个定时邮件推送的服务,当利用lognet4记录日志时,发现日志并没有记录。后来明白windows 服务一般默认是在C:\Windows\System 或是C:\Windows\System32,而我们自己的服务程序一般是放在其他的目录,这样log4net.config文件中的配置路径将无法正确解析。所以就无法记录日志。本来我的lognet4文件与服务文件位于同一目录,后来我就把lognet4.config文件放在了程序exe所在的目录。
1. 我的lognet4.config文件配置内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections> <log4net>
<logger name="sendEmailrError">
<level value="ALL"/>
<!--ALL DEBUG INFO WARN ERROR FATAL OFF-->
<appender-ref ref="RollingLogFileAppender"/>
</logger> <!--<logger name="ugmrob2bLoggerInfo">
<level value="ALL"/>
--><!--ALL DEBUG INFO WARN ERROR FATAL OFF--><!--
<appender-ref ref="LoggerInfo"/>
</logger>--> <appender name="LoggerInfo" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--存放日志的路径-->
<param name="File" value="E:/Log/LogInfo/"/>
<!--日志文件中追加-->
<param name="AppendToFile" value="true"/>
<!--日期文件是否固定不变-->
<param name="StaticLogFileName" value="false"/>
<!--最多保存多少天的记录-->
<param name="MaxSizeRollBackups" value="100"/>
<param name="MaximumFileSize" value="5MB"/>
<!--日志名称-->
<param name="DatePattern" value="yyyy-MM-dd".log""/>
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Date"/> <layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%n异常时间: %d%n记录器: %c%n异常信息: %m%n异常位置:[%t] %-5p [%l]%n"/>
</layout>
</appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--存放日志的路径-->
<param name="File" value="E:/Log/LogError/"/>
<!--日志文件中追加-->
<param name="AppendToFile" value="true"/>
<!--日期文件是否固定不变-->
<param name="StaticLogFileName" value="false"/>
<!--最多保存多少天的记录-->
<param name="MaxSizeRollBackups" value="100"/>
<param name="MaximumFileSize" value="5MB"/>
<!--日志名称-->
<param name="DatePattern" value="yyyy-MM-dd".log""/>
<!--日志根据日期滚动-->
<param name="RollingStyle" value="Date"/>
<layout type="log4net.Layout.PatternLayout">
<!--<param name="ConversionPattern" value="%n异常时间: %d%n记录器: %c%n异常信息: %m%n异常位置:[%t] %-5p [%l]%n"/>-->
<conversionPattern value="%n记录时间:%date 线程ID:[%thread] 日志级别:%-5level %n错误描述:%message%newline" /> </layout>
<!--<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="FATAL"/>
</filter>-->
</appender> </log4net> </configuration>
2. 紧接着在Main入口函数解析lognet4.config文件。
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main()
{
string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
string configFilePath = assemblyDirPath + "\\log4net.config";
XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath)); ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new SendEmailService()
};
ServiceBase.Run(ServicesToRun);
}
}
3. 实例ILog,开始记录日志,其中sendEmailrError为lognet4.config文件中logger的name名称。
log4net.ILog log = log4net.LogManager.GetLogger("sendEmailrError");
log.Error("错误信息");
windows service使用log4net 记录日志的更多相关文章
- Windows服务使用log4net记录日志
该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇. 比较流行的日志组件有以下四种,Topshelf都有相应的组件提供 log4net NL ...
- 使用Topshelf开发Windows服务、log4net记录日志
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...
- [转]C#使用Log4Net记录日志
第一步:下载Log4Net 下载地址:http://logging.apache.org/log4net/download_log4net.cgi 把下载的 log4net-1.2.11-bin-n ...
- 将WebService部署到 SharePoint 2010 gac 缓存中,并用Log4Net记录日志到数据库
最近做了一个sharePoint项目,需要实现的功能是,第三方网站访问我们sharePoint中的数据,通过Webservice方式实现文件的上传和下载. 于是代码工作完成了之后,本地调试没什么问题, ...
- 使用Log4net记录日志(非常重要)
使用Log4net记录日志 首先说说为什么要进行日志记录.在一个完整的程序系统里面,日志系统是一个非常重要的功能组成部分.它可以记录下系统所产生的所有行为,并按照某种规范表达出来.我们可以使用日志 ...
- 如何托管ASP.NET Core应用到Windows Service中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:正在构思一个中间件的设计,考虑是否既可以使用最新的技术,也可以兼顾传统的部署模式.所以有 ...
- 使用BAT安装 Windows Service
脚本如下: @echo off @setlocal enableextensions @cd /d "%~dp0" set InstallPath=C:\DBoxService\S ...
- C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)
系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...
- wince平台下使用log4net记录日志
前面我写过一篇文章是来介绍windows平台下开发软件使用log4net来记录日志的,详情请参考:用一个简单的示例说明日志记录组件log4net的使用. 我们在wince平台下开发程序也一样需要日志文 ...
随机推荐
- 杂项:UN-APP
ylbtech-杂项:APP 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返回顶部 10 ...
- Java调用Groovy
记录一下 http://docs.groovy-lang.org/latest/html/documentation/guide-integrating.html
- (转).Net基础体系和跨框架开发普及
在园子里看到了一篇关于.net体系及框架开发的文章,感触颇深,身为一个.net程序员,发现自己在这方面的跟进和理解远远不够.转到自己这里,分享的同时方便日后查看. 原文链接: http://www.c ...
- MFC学习(五)常见面试题
1:应用程序类 CTestOneApp::InitInstance 可以看做是MFC程序的入口函数,main函数隐藏在这个函数中.实际开发中一般不需要对这个类进行操作,但如果要在建立主对话框之前处理一 ...
- C++11 变量和函数的链接性
在全局变量前添加const或者static,则该变量链接性为内部,即文件内有效.可以使用extern声明为外部. 如果要让函数的链接性为内部,则函数声明和定义都应使用static关键字. 例子: te ...
- Py修行路 内置模块补充 datetime模块
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.datetime模块用于是date和time模块的合集,他内部重新封装了time模块,相比于time ...
- QQ、邮箱、手机号 正则验证
邮箱:/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/ 手机号:/^(((13[0-9]{1})|(15[0-9]{1 ...
- 34-n的pi次方
链接:https://www.nowcoder.com/acm/contest/118/B来源:牛客网 题目描述 喜爱ACM的PBY同学遇到了一道数学难题,已知底数n,请你帮他准确的计算出结果a = ...
- boost库中sleep方法详解
博客转载自:https://blog.csdn.net/huang_xw/article/details/8453506 boost库中sleep有两个方法: 1. 这个方法只能在线程中用, 在主线程 ...
- Luogu 4284 [SHOI2014]概率充电器
BZOJ 3566 树形$dp$ + 概率期望. 每一个点的贡献都是$1$,在本题中期望就等于概率. 发现每一个点要通电会在下面三件事中至少发生一件: 1.它自己通电了. 2.它的父亲给它通电了. 3 ...