祥叔学编程

祥叔学编程
随笔 - 43, 文章 - 0, 评论 - 250, 阅读 - 20万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在“合一微博”开发的过程中,我想看看从腾讯请求过来的微博列表(JSON数组)是什么样的,所以我想打印出日志。于是就本能的想到了log4net ,于是就直接引用log4net.dll

结果可想而知..... 

 

于是就想去看看log4net的源码,想用wp7重新编译的一把。但是我立马就否定了这个思路。

因为在wp7程序中操作本地文件不是那么容易的,要突破IO,沙盒什么的。 

那怎么办呢? 

 

下面给出三种解决方案

一,使用System.Diagnostics.Debug.WriteLine()

 这个方案很简单,使用步骤如下:

1,引用命名空间System.Diagnostics

2,只要在需要输出日志的地方写一行Debug. WriteLine()

3,摁组合键Ctrl+W,O  打开VS的输出视图

4,摁F5

这个方案,很多同学都写过,不信你去搜一把“WP7 在调试过程中显示日志” 。在这我就不多说了。

 

但是这个方案实在太弱了:

1,不能把日志写到文件里

2,很坑爹——输出的文字有限,如果文字过长,它不会全部输出,只会输出前面一部分

 

二,使用WCF+log4net 输出日志

鉴于Diagnostics.Debug.的缺陷,我只能寻思另外的办法,既然wp7应用程序不能直接输出日志文件,那就使用间接的方式吧:WCF+log4net

实现步骤如下: 

1,新建一个WCF服务应用程序 作为打印日志的服务端程序,比如叫 LogService 吧。

2,在LogService 中引用 配置log4net

3,在LogService中添加一打印输出日志的方法,比如叫“WriteLog” 。

4,在客户端程序,即WP7 应用程序中,引用 LogService

5,在需要输出日志的地方调用WriteLogAsync方法

OK,好像收工了。

经测试 ,如果输出的日志很长会出现“Not Found”或者“远程主机强迫关闭了一个现有的连接”或者“The remote server returned an unexpected response: (400) Bad Request.”的错误,这是由于WCF 的安全机制 导致的, 传输的参数大于8k,就会出现此类报错,怎么解决呢?

这里我们可以借鉴“杨过”兄的一片文章,写得很详细,经测试,有效。

地址如下:http://www.cnblogs.com/yjmyzz/archive/2011/06/29/2093829.html

 

至于怎么使用log4net ,这里就废话了,默认各位看官都了解。

 

这里附上此方案的一个完整的demo源码:猛点下载

 

三,介绍两款可以输出WP7调试日志的第三方框架

1NLog  ,下载地址:http://nlog.codeplex.com/

2SilverlightLogging,下载地址http://silverlightlogging.codeplex.com/

 

 

原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/03/21/2409300.html

作者 : 徐明祥 
出处:http://www.cnblogs.com/xumingxiang 
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任 

  

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示