• wince平台下使用log4net记录日志


    前面我写过一篇文章是来介绍windows平台下开发软件使用log4net来记录日志的,详情请参考:用一个简单的示例说明日志记录组件log4net的使用。 我们在wince平台下开发程序也一样需要日志文件的记录。log4net也可以使用,下面我来介绍log4net如何在wince平台下使用。

    测试环境

    开发工具:VS2008,智能项目,form项目。开发环境:.net compact framework 3.5 开发语言:C# 本文不是教你全面了解log4net,仅仅是希望通过本文你可以在wince环境下记录下你该记录的日志,就ok。 废话少说,直接来步骤。

    第一步

    下载官方的dll,最新版本下载地址,请点击log4net最新版本下载

    第二步

    下载后选择正确的log4net的dll,以备我们项目来使用。下载下来后我们解压开,然后找到我们相应的……log4net-1.2.11-bin-newkeylog4net-1.2.11in etcf2.0 elease目录下的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窗体 log4net窗体[/caption]

      [caption id="attachment_1178" align="alignnone" width="600"]log4net运行结果 log4net运行结果[/caption]     [caption id="attachment_1179" align="alignnone" width="600"]日志内容 日志内容[/caption]

     
  • 相关阅读:
    HDU 5495:LCS
    关于使用了cudaMallocHost之后发生 segment fault的原因
    关于grub 损坏的问题
    LightOJ
    LightOJ
    poj3268--Silver Cow Party (最短路+技巧)
    hdoj1443--Joseph (约瑟夫环)
    poj2549--Sumsets (sum)
    UVA11080
    hdoj1548--A strange lift(bfs.)
  • 原文地址:https://www.cnblogs.com/vsdot/p/3263436.html
Copyright © 2020-2023  润新知