在“合一微博”開發的過程中,我想看看從騰訊請求過來的微博列表(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調試日志的第三方框架
1,NLog ,下載地址:http://nlog.codeplex.com/
2,SilverlightLogging,下載地址http://silverlightlogging.codeplex.com/
原文地址:http://www.cnblogs.com/xumingxiang/archive/2012/03/21/2409300.html
作者 : 徐明祥
出處:http://www.cnblogs.com/xumingxiang
版權:本文版權歸作者和博客園共有
轉載:歡迎轉載,為了保存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文連接;否則必究法律責任