最近写了个定时邮件推送的服务,当利用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("错误信息");

  

最新文章

  1. debian下Apache和tomcat整合(使用apt工具)
  2. php文件之间传值的三种主流并且常用的方式
  3. GPRM/GNRMC定位信息的读取与解析
  4. linux上java路径设置
  5. jQuery对象与dom对象的区别与相互转换
  6. sqlserver ldf过大处理方法
  7. JAVA基础知识之网络编程——-基于NIO的非阻塞Socket通信
  8. iOS - OC NSCache 缓存
  9. selenium for python 所有方法
  10. 触摸点为scrollview上的子控件时,scrollview不能滚动(iOS8)
  11. centos6.5安装vsftpd
  12. Unicode 字符集与它的编码方式
  13. HDOJ 4821 String
  14. Cygwin Unable to get setup from *
  15. [转载] Netty源码分析
  16. Selenium自动化测试之学会元素定位
  17. PAT 1032 挖掘机技术哪家强
  18. OpenCV操作像素
  19. ISO-OSI的七层协议经典架构
  20. Oracle E-Business Suite并发处理机制(Current Processing)

热门文章

  1. Ubuntu apt-get卸载小记
  2. 【转】Jmeter项目测试
  3. Vue.js:教程
  4. Excel开发学习笔记:文件选择控件、查找匹配项、单元格格式及数据有效性
  5. Linux学习笔记 -- 目录与文件的管理
  6. maven学习0 常用命令学习
  7. [Android]异步任务AsyncTask使用解析
  8. VMware80端口映射
  9. 一个简单的Python多线程
  10. Linux下安装Python2.7