unity3d:使用log4net输出日志到unity3d UI

下载最新log4net.dll到unity的Plugins文件夹  unity中设置.net为最新的

编写输出到UI上的类

  1. public class UiLogEventArgs : EventArgs  //自定义的类
  2. {
  3.     public string Message { get; private set; }
  4.     public UiLogEventArgs() { }
  5.     public UiLogEventArgs(string message)
  6.     {
  7.         Message = message;
  8.     }
  9.     
  10. }
  11.  
  12. public class UiLogAppender : AppenderSkeleton //事件和方法
  13. {
  14.     public event EventHandler<UiLogEventArgs> UiLogReceived;
  15.     protected override void Append(LoggingEvent loggingEvent)
  16.     {
  17.         var message = RenderLoggingEvent(loggingEvent);
  18.         OnUiLogReceived(new  UiLogEventArgs(message));
  19.     }
  20.     protected virtual void OnUiLogReceived(UiLogEventArgs e)
  21.     {
  22.         if (UiLogReceived!=null)
  23.         {
  24.             UiLogReceived(this,e);
  25.         }
  26.     }
  27. }
     
  28. /// <summary>
  29. /// 日志打印功能
  30. /// </summary>
  31. public class LogTest : MonoBehaviour
  32. {
  33.     public GameObject textPre;
  34.     public Transform parent;
  35.     public Text text;
  36.  
  37.     private static ILog logUI = LogManager.GetLogger("UIFileLogger");
  38.  
  39.     private void Start()
  40.     {
  41.         //输出到UI
  42.         var hierarchy = LogManager.GetRepository() as Hierarchy;
  43.         var appenders = hierarchy.Root.Repository.GetAppenders();
  44.         foreach (var appender in appenders)
  45.         {
  46.             var uiLogAppender = appender as UiLogAppender;
  47.             if (uiLogAppender != null)
  48.             {
  49.                 uiLogAppender.UiLogReceived += ShowMessageOnUI;
  50.             }
  51.         }
  52.     }
  53.  
  54.     private void ShowMessageOnUI(object sender, UiLogEventArgs e)
  55.     {
  56.         GameObject go = GameObject.Instantiate(textPre);
  57.         go.GetComponent<Text>().text = e.Message;
  58.         go.transform.SetParent(parent);
  59.         text.text = e.Message;
  60.         text.text += "\n";
  61.         // Debug.Log("显示到ui");
  62.     }
  63. }
  64.  

配置文件路径为StreamingAssets文件夹

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>
  <appSettings>
  </appSettings>
  <log4net>

    <appender name="UiLogAppender" type="UiLogAppender">
      <!--UI显示日志-->    
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="记录时间:%date 线程:[%thread] 日志级别:%-5level 记录类:%logger 日志消息:%message%newline" />
      </layout>
    </appender>
  
    <logger name="UIFileLogger" additivity="false">
      <level value="DEBUG" />
      <appender-ref ref="UiLogAppender" />
    </logger>
  </log4net>
</configuration>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值