Unity实现简易日志输出功能
在使用Unity中的Debug.Log()进行日志输出时很不方便,在打包出来的可执行文件中没有办法看到输出,所有就想自己实现一个简易的日志输出功能,可以输出到日志文件,因为能力实在是不够,所以有错误和不合理的地方,还请各位老师指点一下,谢谢啦
创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计、成都网站建设、荣县网络推广、微信小程序定制开发、荣县网络营销、荣县企业策划、荣县品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联公司为所有大学生创业者提供荣县建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
1.日志记录器接口
public interface ILogger
{
void Log(string condition, string stackTrace, UnityEngine.LogType type);
}2.日志文件记录器
using System;
using UnityEngine;
using System.IO;
public class FileLogger : ILogger
{
private readonly string path;
///
/// 构造方法
///
/// 是否清空原有的日志
public FileLogger(bool isClear = false)
{
switch (Application.platform)
{
case RuntimePlatform.Android:
path = Path.Combine( Application.persistentDataPath,"log.txt");
break;
case RuntimePlatform.WindowsPlayer:
path = Path.Combine(Application.dataPath, "log.txt");
break;
case RuntimePlatform.WindowsEditor:
path = Path.Combine(Application.dataPath, "log.txt");
break;
case RuntimePlatform.IPhonePlayer:
path = Path.Combine(Application.persistentDataPath, "log.txt");
break;
case RuntimePlatform.OSXEditor:
break;
default:
break;
}
if (isClear)
{
if (File.Exists(path))
{
File.Delete(path);
}
}
}
public void Log(string condition, string stackTrace, LogType type)
{
using (StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.UTF8))
{
string msg = string.Format("[{0}] {1}: {2}\n{3}", GetNowTime(), type, condition, stackTrace);
sw.WriteLine(msg);
}
}
#region Tool Method
private string GetNowTime()
{
return DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
}
#endregion
}3.日志系统管理类
using System;
using UnityEngine;
public class LogSys
{
private static ILogger logger;
public static ILogger Logger
{
get { return logger; }
}
public bool IsOpen
{
get { return Debug.unityLogger.logEnabled; }
}
private LogSys() { }
///
/// 初始化
///
/// 日志输出器
/// 是否开启日志输出
public static void Init(ILogger _logger, bool isOpen = true)
{
Init(isOpen);
logger = _logger;
Enable();
}
public static void Init(bool isOpen = true)
{
Debug.unityLogger.logEnabled = isOpen;
}
///
/// 过滤器
///
/// 需要显示的日志类型
public static void Filter(LogType logType = LogType.Log)
{
Debug.unityLogger.filterLogType = logType;
}
public static void Enable()
{
if (logger != null)
{
Application.logMessageReceived += logger.Log;
}
}
public static void Disable()
{
if (logger != null)
{
Application.logMessageReceived -= logger.Log;
}
}
}4.测试
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public Text logText;
void Awake()
{
LogSys.Init(new FileLogger());
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
Debug.Log("My name is Blinkedu.");
}
if (Input.GetKeyDown(KeyCode.W))
{
Debug.LogWarning("My name is Blinkedu.");
}
if (Input.GetKeyDown(KeyCode.E))
{
Debug.LogError("My name is Blinkedu.");
}
}
private void OnDestroy()
{
LogSys.Disable();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。
分享文章:Unity实现简易日志输出功能
网站路径:http://www.jxjierui.cn/article/pjjsgd.html


咨询
建站咨询
