原位址:http://www.cnblogs.com/koalaylj/archive/2012/09/04/2670629.html
最近在用unity3d開發android上的遊戲,一直debug.log感覺很悲劇,後來研究了下把log4net加了進去,能通過udp發送遠端日志,電腦手機上都能發送日志,頓時神清氣爽。可是後來才發現,把eclipse打開,連接配接到android裝置後,debug.log
能直接在logcat中顯示出來,囧!
但是還是分享下我加入log4net的過程吧,如果确實有需要的話可以借鑒下,少走點兒彎路,之前查各種資料各種費勁,其實一切沒那麼麻煩。。。
還是分步驟來說吧。
開發及測試環境:win7旗艦版 + .net2.0 + java6 + android + unity3.5;
1. 下載下傳log4net,下來後把裡面mono檔案夾下的log4net.dll拿出來用。
2.
在unity3d中建立asset\log檔案夾,日志相關的都放到這裡,log4net的dll也拷貝到這裡。注意要把unity的playersetting中的api等級設定為.net2.0,不要用預設的.net2.0
subset,不然會各種報錯(其實你引入其他dll的時候,什麼沒幹就一堆錯的話,很可能也是這個問題),然後建立log4net.xml,這個配置就不多說了,配置的是udpappender,直接粘代碼。
<log4net>
<appender name="udpappender"
type="log4net.appender.udpappender">
<localport value="9090"
/>
<remoteaddress value="192.168.199.80"
<remoteport value="8081" />
<layout
type="log4net.layout.patternlayout,
log4net">
<conversionpattern
value="%d{yyyy-mm-dd hh:mm:ss,fff} %-5level [%c:%line] - %message%newline"
</layout>
<filter
type="log4net.filter.levelrangefilter">
<param
name="levelmin" value="debug" />
name="levelmax" value="fatal" />
</filter>
</appender>
<root>
<level
value="all" />
<appender-ref ref="udpappender"
</root>
</log4net>
說明:remoteaddress和remoteport是接受udp日志的伺服器位址和端口(後面說udp伺服器配置),localport是本地發送端口,要保證在手機上和電腦上這個端口都能使用。
3.配置udp日志接受伺服器:好像udp日志能直接發送到cmd視窗中,無需什麼配置,可是在windows下就是沒搞成功,沒辦法,自己用.net寫了個logserver,就起一個端口監聽下,簡單的接受udp資訊顯示出來,具體不多說了,如果有興趣看看的話可以稍後下載下傳源代碼(文章末尾部分提供所有代碼下載下傳)研究下。
4.使用,unity3d搞pc的遊戲還好說,從加載檔案比較友善,但是如果在手機上的話,從sd卡上加載就稍微有點兒别扭,是以如果需要在手機上用的,就把log4net.xml
拷貝到resources目錄下,改字尾為txt,這個目錄unity能通過resources.load加載檔案,不用自己找路徑了。手機上用的話就加載這個配置檔案。其實當初弄的時候就這個地方卡了我比較久,因為好多教程配置檔案都在assembly.cs(.net原生項目才有)配置,unity3d中沒法搞,後來才發現能直接加載檔案進行配置,真是囧了。。
//4-1,log4net配置檔案的路徑
private static string _filename =
#if
unity_android
"config/log4net";
#elif unity_standalone_win
application.datapath +
"/log/log4net.xml";
#endif
//4-2,加載配置檔案
#if unity_android
byte[] xml =
(resources.load(_filename, typeof(textasset)) as
textasset).bytes;
xmlconfigurator.configure(new memorystream(xml));
#elif
unity_standalone_win
xmlconfigurator.configureandwatch(new
system.io.fileinfo(_filename));
剩下的使用就和在.net下原生開發一樣了,就不多說了。
源代碼下載下傳位址:
sina
csdn