原地址: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" />
   <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

最新文章

  1. 使用node js 操作 Mysql 数据库
  2. BZOJ 1898 Swamp 沼泽鳄鱼(矩阵)
  3. 第五章 Logistic回归
  4. 8天玩转并行开发——第三天 plinq的使用
  5. 开发人员如何上google查资源,如果浏览国外资源方法
  6. ELK学习总结(3-3)elk的组合查询
  7. 深度解密Go语言之关于 interface 的10个问题
  8. [Swift]LeetCode900. RLE 迭代器 | RLE Iterator
  9. 强大的jupyter,python开发者的福音
  10. ssm心得
  11. python2.7安装
  12. js 字符串截取函数substr,substring,slice之间的差异
  13. Rpc框架dubbo-server(v2.6.3) 源码阅读(一)
  14. centos7下安装docker(13.4容器volume总结)
  15. quartus prime 16.0 报警告 inferring latch
  16. Alpha冲刺5
  17. springboot工程添加404页面
  18. 20165304《JAVA程序设计》第四周学习总结
  19. 自定义MVC的Helper扩展方法
  20. 神奇:java中float,double,int的值比较运算

热门文章

  1. Opencv学习笔记1:安装opencv和VS2015并进行环境配置
  2. ms08-067漏洞的复现
  3. UESTC 2015dp专题 j 男神的约会 bfs
  4. yii/helper/Html
  5. 支持Tasker控制的app合集
  6. Ubuntu 16.04.2 安装Linux kernel 4.10 内核并解决 VMware 问题
  7. java反射机制简单介绍
  8. VS2017安装后如何移动 Windows Kits文件夹
  9. Spring Data JPA -1-CRUD入门
  10. EntityFramework:迁移工具入门