我正在 MC9190 设备 (CF 3.5) 上编写 windows mobile (6.5.3) 应用程序。我想记录某些事件(例如用户登录信息)和发生的任何运行时异常。我怎样才能做到这一点?我尝试使用此示例中的 log4net http://breathingtech.com/2009/using-apache-log4net-in-net-compact-framework-projects/ 但不支持 CF 3.5。(http://logging.apache.org/log4net/release/framework-support.html)。如何在我的应用程序中记录事件/异常?CF 3.5 是否有可用的标准日志框架?谢谢你。
1 回答
编写一个简单的日志记录并不难。无论您实施哪种日志记录,您都需要为要记录的每个异常或事件添加一行。Log4Net 和其他框架是成熟的,并支持在 Compact Framework 上不可用的技术(即记录到系统事件日志)。因此,您必须自行决定是否值得使用无法使用完整框架中支持的大多数功能的框架。
还有一些更简单的日志工具:http: //blogs.msdn.com/b/davidklinems/archive/2006/08/17/704662.aspx
另请参阅:.NET Compact Framework 的日志库?
log4net 及其紧凑的框架支持的问题在于大部分时间都没有维护(与其他开源库一样)。
为紧凑的框架获取一个有效的 log4net 很容易:
- 打开log4.net src/log4net.vs2008.sln
- 添加一个新的SmartDevice类库项目(WM5 SDK和CF2都可以)并命名为log4netCF
- 删除现有的 class1.cs 文件
更改项目属性: 程序集名称和默认命名空间=“log4net”
现在只需在解决方案资源管理器中右键单击 log4net.vs2008 项目中的每个源代码文件夹并选择复制,然后右键单击 log4netCF 项目并选择粘贴对每个文件夹重复此操作:
- 附加器,
- 配置,
- 核,
- 日期格式化程序,
- 筛选,
- 布局,
- 对象渲染器,
- 插入,
- 存储库,
- 实用程序
还复制单个文件:
- 装配信息.cs
- 程序集版本信息.cs
- 全局上下文.cs
- 日志文件
- 逻辑线程上下文.cs
- 日志管理器.cs
- MDC.cs
- NDC.cs
- 线程上下文.cs
从 log4net.vs2008 到 log4netCF 项目。
- 删除 log4netCF 项目中的 Properties/AssemblyInfo.cs
- 将 PocketPC;NETCF_2_0;NETCF 添加到 log4netCF 的构建选项中
现在右键单击 log4netCF 项目并选择 Build。它应该没有任何错误地构建,并且您有一个工作的 Compact Framework 2.0 log4net 程序集。
可以在 www.hjgode.de/temp/log4netCF.csproj 获得项目文件的 dropin。只需下载 log4net 的 subversion 副本并将其放入 log4net.vs2008.csproj 文件旁边的 src 文件夹中。