Unity3d中使用log4net


最近在用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" />
   <param 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));
#endif

剩下的使用就和在.net下原生開發一樣了,就不多說了。

源代碼下載地址:

sina http://iask.sina.com.cn/u/1634280977/ish?folderid=967939

csdn http://download.csdn.net/detail/koalaylj/4547902

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM