unity3d使用Log4.net进行日志记录

http://blog.163.com/penguin_ku/blog/static/2186970162014210102252904/


Unity3D的日志输出,个人感觉不是很强。今天在调试.net remoting,结果发现工作不正常,因为是打包出来的程序,没办法debug(也许可以,但个人没试验过对unity3d打包的程序进行attach断点调试,如果有人捣鼓,跪求分享)。

查看unity自身输出的output_log.txt,信息基本啥价值都没。而我们希望程序在我们需要注意的地方输出有价值的信息,故而,目光投到了老古董log4上面,找到C#的版本log4.net。对其简单封装了下(纯粹个人需求,我喜欢静态调用,大家根据自己的需求,封装或不封装)

调用代码:

        LogWrapper.Logger.Debug("测试");

初始化代码:

LogWrapper.ConfigLog(string.Format(@"{0}\Config\log.config", Application.dataPath));

其中log.config为log4.net的配置信息。为方便大家,直接贴出来了。配合上注释,相信,大家都能看懂,学会怎么配置自己的配置文件。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <configSections>
    <!--<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/>-->
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>

  <log4net>
    <!--
      根日志配置,所有日志,默认从此处继承
    -->
    <root>
      <!--取值范围[从低到高] ALL DEBUG INFO WARN RROR FATAL OFF-->
      <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
      <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
      <level value="ALL"/>
      <!--默认文件输出-->
      <appender-ref ref="RollingFileAppender"/>
    </root>

    <!--
      如果需要定制log则取消下列注释
    -->
    <!--
    <logger name="testApp.Logging">
      <level value="WARN"/>
      <level value="DEBUG"/>
    </logger>
    -->

    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">

      <!--日志文件名开头-->
      <file value="U3D_Run.log"/>

      <!--多线程时采用最小锁定-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>

      <!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
      <datePattern value="(yyyyMMdd)"/>
     
      <!--是否追加到文件,默认为true,通常无需设置-->
      <appendToFile value="true"/>

      <!--变换的形式为日期,这种情况下每天只有一个日志-->
      <!--此时MaxSizeRollBackupsmaximumFileSize的节点设置没有意义-->
      <!--<rollingStyle value="Date"/>-->
      <!--变换的形式为日志大小-->
      <!--这种情况下MaxSizeRollBackupsmaximumFileSize的节点设置才有意义-->
      <RollingStyle value="Size"/>
      <!--<RollingStyle value="Composite"/>-->

      <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
      <MaxSizeRollBackups value="10"/>

      <!--每个日志文件的最大大小-->
      <!--可用的单位:KB|MB|GB-->
      <!--不要使用小数,否则会一直写入当前日志-->
      <maximumFileSize value="2MB"/>

      <!--日志格式-->
      <layout type="log4net.Layout.PatternLayout">
        <!--
        <param name="Header" value="[Header]\r\n"/>
        <param name="Footer" value="[Footer]\r\n"/>
        -->
        <!--
        %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息
        %n(new line):换行
        %d(datetime):输出当前语句运行的时刻
        %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数
        %t(thread id):当前语句所在的线程ID
        %p(priority):日志的当前优先级别,即DEBUGINFOWARN…
        %c(class):当前日志对象的名称,例如:
        %L(line):输出语句所在的行号
        %F(file):输出语句所在的文件名
        %-数字:表示该项的最小长度,如果不够,则用空格填充
        如下配置输出时间、文件、行号、线程ID、日志级别、信息、换行
        -->
        <param name="ConversionPattern" value="[%d] [%-5p] [ThreadID: %t] [File: %F] [Line: %L] - %m%n"/>
      </layout>

      <!--
        配置日志记录范围,即仅记录LevelMinLevelMax之间级别的日志
      -->
      <!--
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ALL" />
        <param name="LevelMax" value="FATAL" />
      </filter>
      -->
    </appender>

    <!--
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" >
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="[%d] [%-5p] [ThreadID: %t] [File: %F] [Line: %L] - %m%n"/>
      </layout>
    </appender>
    -->

  </log4net>
</configuration>

进行测试,一切OK。打包之后,把配置文件拷贝到Application_data目录下即可。运行,测试结果OK。

目前存在一个问题,相对其实,算很严重的了。我的日志输出中,竟然获取不到filename也获取不到line。这个,对于定位问题有点坑的说。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值