wince平台下使用log4net记录日志
前面我写过一篇文章是来介绍windows平台下开发软件使用log4net来记录日志的,详情请参考:用一个简单的示例说明日志记录组件log4net的使用。
我们在wince平台下开发程序也一样需要日志文件的记录。log4net也可以使用,下面我来介绍log4net如何在wince平台下使用。
log4net窗体[/caption]
[caption id="attachment_1178" align="alignnone" width="600"]
log4net运行结果[/caption]
[caption id="attachment_1179" align="alignnone" width="600"]
日志内容[/caption]
测试环境
开发工具:VS2008,智能项目,form项目。开发环境:.net compact framework 3.5 开发语言:C# 本文不是教你全面了解log4net,仅仅是希望通过本文你可以在wince环境下记录下你该记录的日志,就ok。 废话少说,直接来步骤。第一步
下载官方的dll,最新版本下载地址,请点击log4net最新版本下载。第二步
下载后选择正确的log4net的dll,以备我们项目来使用。下载下来后我们解压开,然后找到我们相应的……\log4net-1.2.11-bin-newkey\log4net-1.2.11\bin\netcf\2.0\release目录下的log4net.dll,这就是我们使用的主角。第三步
配置log4net的配置文件,声明一句,在wince平台下是没有config文件的,因此我们使用xml文件来配置。配置内容如下:<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.2" /> </configSections> <log4net> <logger name="MyLog"> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="LogFileAppender" /> </logger> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n"/> </layout> </appender> <appender name="LogFileAppender" type="log4net.Appender.FileAppender" > <param name="File" value="MyLog.Log" /> <param name="AppendToFile" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /> </layout> </appender> </log4net> </configuration>我把配置文件的名字命名为:log4netConfig.xml,在下面的代码中会使用。
第四步
开始使用log4net,在使用的过程中和在windows平台下不一样。原来的解释是这样的:/// <remarks> /// <para> /// The .NET Compact Framework does not support retrieving assembly-level /// attributes, therefor log4net must be configured by code. /// </para> /// <para> /// The .NET Compact Framework does not support hooking up the <c>AppDomain.ProcessExit</c> /// and <c>AppDomain.DomainUnload</c> events, so log4net must be shutdown manually to /// free all resources. /// </para> /// </remarks>我英语不怎么样,但是我来简单翻译一下,.net cf不支持在Assembly的atrributes,所以配置什么的都要在代码中操作。 而且我们必须手动的停止log4net的一切资源。 下面来看一下我写的代码:
using System; using System.IO; using System.Reflection; using System.Windows.Forms; namespace Log4netDemo { static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [MTAThread] static void Main() { //在program文件中配置 string configPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), "log4netConfig.xml"); FileInfo fileInfo=new FileInfo(configPath); log4net.Config.XmlConfigurator.Configure(fileInfo); Application.Run(new LogForm()); } } }
using System.Threading; using System.Windows.Forms; using log4net;//记得引用我们的log4net.dll否则会报错 namespace Log4netDemo { /// <summary> /// 调用log4net的窗体 /// </summary> public partial class LogForm : Form { public LogForm() { InitializeComponent(); } private void btnStart_Click(object sender, System.EventArgs e) { ILog logger = LogManager.GetLogger("MyLog"); int i = 0; while (true) { logger.Debug("Hello, Log4Net..."); i++; Thread.Sleep(500); if (i==100) { break; } } LogManager.Shutdown();//手动的释放资源 } } }让我们看一下简单的窗体: [caption id="attachment_1177" align="alignnone" width="238"]
![log4net窗体](http://vsdot.net/wp-content/uploads/2013/07/20130712140528.png)
![log4net运行结果](http://vsdot.net/wp-content/uploads/2013/07/20130712140853-1024x399.png)
![日志内容](http://vsdot.net/wp-content/uploads/2013/07/20130712141057-1024x648.png)