日志服务接入方式之Unity 3D篇

Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。
日志服务前不久推出了Web Tracking功能,您可以通过Web Tracking功能非常方便的收集Unity 3D的日志,下面以收集Unity Debug.Log为例,讲解如何将Unity日志收集到日志服务中。

step 1: 开通Web Tracking功能。

开通方法请参考另外一篇文章:日志服务Tracking功能

step 2: 注册Unity3D LogHandler。

在Unity editor中创建c#文件LogOutputHandler.cs,并将下面的代码拷贝进去,修改其中的三个成员变量,分别是日志项目的名称project,日志库的名字logstore,日志项目的地址serviceAddr,serviceAddr可以从日志服务官方文档中找到。

using UnityEngine;
using System.Collections;

public class LogOutputHandler : MonoBehaviour
{

    //Register the HandleLog function on scene start to fire on debug.log events
    public void OnEnable()
    {
        Application.logMessageReceived += HandleLog;
    }

    //Remove callback when object goes out of scope
    public void OnDisable()
    {
        Application.logMessageReceived -= HandleLog;
    }

    string project = "your project name";
    string logstore = "your logstore name";
    string serviceAddr = "http address of your log service project";

    //Capture debug.log output, send logs to Loggly
    public void HandleLog(string logString, string stackTrace, LogType type)
    {
        string parameters = "";
        parameters += "Level=" + WWW.EscapeURL(type.ToString());
        parameters += "&";
        parameters += "Message=" + WWW.EscapeURL(logString);
        parameters += "&";
        parameters += "Stack_Trace=" + WWW.EscapeURL(stackTrace);
        parameters += "&";
        //Add any User, Game, or Device MetaData that would be useful to finding issues later
        parameters += "Device_Model=" + WWW.EscapeURL(SystemInfo.deviceModel);

        string url = "http://" + project + "." + serviceAddr + "/logstores/" + logstore + "/track?APIVersion=0.6.0&" + parameters;
        StartCoroutine(SendData(url));
    }

    public IEnumerator SendData(string url)
    {
        WWW sendLog = new WWW(url);
        yield return sendLog;
    }
}

上面的代码可以异步的将日志发送到阿里云日志服务中,在示例中您可以添加更多想要收集的字段。

step 3:产生Unity日志。

在工程中创建LogglyTest.cs文件,并加入下面的代码:

using UnityEngine;
using System.Collections;

public class LogglyTest : MonoBehaviour {

    void Start () {
        Debug.Log ("Hello world");
    }
}

step 4: 到日志服务控制台查看。

上述步骤做完之后,运行Unity程序,就可以在日志服务的控制台看到您发送的日志了。

总结

上面的例子中给出了Debug.Log或者类似的比如Debug.LogError、Debug.LogException日志的收集方法,Unity的组件对象模型以及其提供的程序崩溃API、其他各种LOG API使得可以非常方便的收集客户端的设备信息,这些我将会在接下来的文章中介绍。

时间: 2024-09-22 05:33:25

日志服务接入方式之Unity 3D篇的相关文章

日志服务接入方式之JS篇

本篇主要介绍使用JS SDK收集浏览器端的数据,附件是我们提供的JS库,使用它可以非常方便的收集浏览器端的信息,比如用户操作系统类型.浏览器类型和版本.屏幕分辩率等.除此以外,JS SDK还支持收集用户自定义的数据,比如在事件响应中收集特定的信息. JS SDK提供了一种非常灵活的前端页面代码埋点方式,您可以使用JS SDK将您关心的任何数据写入日志服务,后续可以在日志服务中消费这些数据,比如导入ODPS.OSS,也可以使用Client Library进行自定义消费,下面将介绍下JS SDK的使

日志服务接入方式之log producer library

日志服务(原SLS)团队提供LogHub Producer Library方便客户端接入日志,Producer Library和Consumer Library是对LogHub功能的包装,降低数据收集与消费的门槛. Producer Library解决的问题: 客户端日志不落盘:既数据产生后直接通过网络发往服务端. 客户端高并发写入:例如一秒钟会有百次以上写操作. 客户端计算与IO逻辑分离:打日志不影响计算耗时. 在以上场景中,Producer Library会简化你程序开发的代价,帮助你批量聚

日志服务接入方式之loghub log4j appender

Loghub Log4j Appender介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输

日志服务(原SLS)新功能发布(5)--使用Logstash接入数据

日志服务结合Logstash 目前,阿里云用户可以通过API/SDK或Logtail将数据写入日志服务,参考. 今天要介绍一个新方法:使用著名开源软件Logstash采集机器日志数据,并结合日志服务插件完成数据上传日志服务功能. 用户可以在阿里云ECS,或者是IDC机房机器,又或者是其它云厂商的虚拟机上安装Logstash及插件,进行简单的配置,轻松地将本机日志数据搬到云上来. IIS日志场景 以Windows平台上最常见的IIS(Internet Information Services)日志

日志服务(原SLS)新功能发布(6)--使用logtail接入syslog数据

Logtail支持通过tcp协议接收syslog日志 Logtail 是日志服务(原SLS)客户端,支持文本类日志数据的收集.考虑到syslog功能是linux平台上广泛使用的日志集中化管理方案,新版本的Logtail将支持syslog数据接入,目前Logtail数据接入方式如下:最左侧是支持syslog日志输出的模块,包括nginx.java语言.路由器.linux服务器等. syslog是什么? 可以参考鸟哥的Linux私房菜. 使用Logtail的syslog功能有哪些优势? 和利用文本文

使用日志服务LogHub替换Kafka

前几天有客户问到,云上有什么服务可以替换Kafka? 怀着程序员的一丝小小的骄傲回复:日志服务(原SLS)下LogHub功能可以完全替代Kafka等产品,并且在性能.易用性和稳定性上更佳. 但客户将信将疑,于是花了一天时间整理一篇文章,简单从各个角度解释下为何建议用户从自搭Kafka换成使用LogHub. 背景信息 Kafka是分布式消息系统,由Linkedin原员工Jay Kreps编写(感兴趣的可以参见这篇文章<The Log: What every software engineer sh

通过日志服务调试分布式系统

为了解决分布式系统开发过程中调试和分析性能的问题,在过去阿里云产品的开发调试过程中,我们开发了Tracer工具.Tracer主要用来解决分布式系统执行过程关联问题,它的基本原理如下: 用户在关键程序的入口埋点以日志方式输出时间.Trace ID.上下文等信息.当用户请求经过埋点函数时,输出日志.通过以上步骤,我们就能通过关联同样的Trace ID来记录一个请求生命周期内访问多个进程的情况. 当携带Trace ID的请求每一次执行到这个宏,会留下这样一条日志: [2013-07-13 10:28:

自建ELK vs 日志服务(SLS)全方位对比

简介 提到日志实时分析,很多人都会想到很火的ELK Stack(Elastic/Logstash/Kibana)来搭建.ELK方案开源,在社区中有大量的内容和使用案例. 阿里云日志服务产品在新版中增强查询分析功能(LogSearch/Analytics),支持对日志数据实时索引与查询分析,并且对查询性能和计算数据量做了大量优化.在这里我们做一个全方位的比较,对于用户关心的点,我们依次展开分析: 易用:上手及使用过程中的代价 功能(重点):主要针对查询与分析两块 性能(重点):对于单位大小数据量查

日志服务(原SLS)新功能发布(9)--Logtail配置支持主题(Topic)设置功能

日志服务中日志为日志服务中处理的最小数据单元,采用半结构化数据模式定义一条日志,具体数据模型包括主题(Topic).时间(Time).内容(Content)和来源(Source),详细描述请参考核心概念.其中主题(Topic)为用户自定义字段,用以标记一批日志(例如:访问日志根据不同站点进行标记),默认值为空字符串(空字符串也为一个有效的主题).用户可以通过使用REST API/SDK上传数据时设置主题.除此之外,Logtail客户端为日志服务用户常用的数据接入客户端,目前也支持设置使用不同的属