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-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窗体 log4net窗体[/caption]

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

 

转载于:https://www.cnblogs.com/vsdot/p/3263436.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
日志输出操作,支持WinCe及Win32平台:功能强大,代码简洁 // 摘要: // 日志输出操作,支持WinCe及Win32平台。 [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public class Log4net { private string[] logLevelText = new string[] { "TRACE", "INFO", "WARN", "ERROR", "FATAL", "NONE", }; // // 摘要: // 日志文件操作类。 // // 参数: // filepath: // 日志文件名,全路径文件名称。 public Log4net(string filepath) { } ~Log4net() { } #region ------Property------ // // 摘要: // 获取或设置当前日志的最低水平。 // // 返回结果: // FENIO.LOG_LEVEL,表示当前日志输出的最低水平,低于当前水平的日志不再输出。 public LOG_LEVEL LogLevel { } #endregion #region ------ Public ------ // // 摘要: // 初始化日志文件,根据指定文件的大小备份日志文件。 // // 参数: // fileSize: // 日志文件大小,单位:KB。 public bool Initilize(long fileSize) { } // 摘要: // 释放由 FENIO.Log4net 使用的所有资源。 public void Dispose() { } // // 摘要: // 输出日志,级别LOG_NONE // // 参数: // logFormat: // System.String,包含零个或多个格式项。 // argLog: // 包含零个或多个要格式化的对象的 System.Object 数组。 public void WriteLog(string logFormat, params object[] argLog) { } // // 摘要: // 输出日志,级别LOG_TRACE // // 参数: // logFormat: // System.String,包含零个或多个格式项。 // argLog: // 包含零个或多个要格式化的对象的 System.Object 数组。 public void WriteTrace(string logFormat, params object[] argLog) { } // // 摘要: // 输出日志,级别LOG_INFO // // 参数: // logFormat: // System.String,包含零个或多个格式项。 // argLog: // 包含零个或多个要格式化的对象的 System.Object 数组。 public void WriteInfo(string logFormat, params object[] argLog) { } // // 摘要: // 输出日志,级别LOG_WARNING // // 参数: // logFormat: // System.String,包含零个或多个格式项。 // argLog: // 包含零个或多个要格式化的对象的 System.Object 数组。 public void WriteWarning(string logFormat, params object[] argLog) { } // // 摘要: // 输出日志,级别LOG_ERROR // // 参数: // logFormat: // System.String,包含零个或多个格式项。 // argLog: // 包含零个或多个要格式化的对象的 System.Object 数组。 public void WriteError(string logFormat, params object[] argLog) { } // // 摘要: // 输出日志,级别LOG_FATAL // // 参数: // logFormat: // System.String,包含零个或多个格式项。 // argLog: // 包含零个或多个要格式化的对象的 System.Object 数组。 public void WriteFatal(string logFormat, params object[] argLog) { } // // 摘要: // 输出日志,级别LOG_FATAL // // 参数: // logLevel: // FENIO.LOG_LEVEL,输出日志级别。 // title: // System.String 日志信息。 // len: // 输出byte类型数据的大小。 // lpBytes: // 输出字节型数据,System.Byte 数组。 public void WriteBytes(LOG_LEVEL logLevel, string title, int len, byte[] lpBytes) { } #endregion #region ------Private------ private void OpenFile() { } private void CheckFileSize() { } private string GetCurrentTime() { } private void WriteLog(LOG_LEVEL logLevel, string log) { } #endregion } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值