using Newtonsoft.Json;
using System;
using System.IO;
using System.Text;
using UnityEngine;
using Debug = UnityEngine.Debug;
public class WriteLog : MonoBehaviour
{
private static FileStream FileWriter;
private static UTF8Encoding encoding;
private static WriteLog consoleLog;
public static WriteLog ConsoleLog
{
get
{
if (consoleLog == null)
consoleLog = new WriteLog();
return consoleLog;
}
}
FileInfo fileInfo;
public void LogStart()
{
var path = Application.persistentDataPath + "/Log";
Directory.CreateDirectory(path);
string NowTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss").Replace(" ", "_").Replace("/", "_").Replace(":", "_");
fileInfo = new FileInfo(Application.persistentDataPath + "/Log/" + NowTime + "_Log.txt");
FileWriter = fileInfo.Open(FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
encoding = new UTF8Encoding();
Application.logMessageReceived += LogCallback;
}
/// <summary>
/// Log回调
/// </summary>
/// <param name="condition">输出内容</param>
/// <param name="stackTrace">堆栈追踪</param>
/// <param name="type">Log日志类型</param>
private void LogCallback(string condition, string stackTrace, LogType type)
{
if (type == LogType.Log) return;
string content = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " " + "【" + type + "】" + "【" + stackTrace + "】" + ":" + condition + Environment.NewLine + Environment.NewLine;
FileWriter.Write(encoding.GetBytes(content), 0, encoding.GetByteCount(content));
FileWriter.Flush();
this.uploadLog();
}
private void OnDestroy()
{
if ((FileWriter != null))
{
FileWriter.Close();
Application.logMessageReceived -= LogCallback;
FileUtils.DelectDir(Application.persistentDataPath + "/Log");
}
}
void uploadLog()
{
if ((FileWriter != null))
{
FileWriter.Close();
Application.logMessageReceived -= LogCallback;
}
byte[] bytes = File.ReadAllBytes(this.fileInfo.FullName);
WWWForm form = new WWWForm();
form.AddBinaryData("file", bytes, this.fileInfo.Name);
HttpMgr.SendRequest("m/exceptionlog", form, (bool success, string data) =>
{
if (success)
{
Debug.Log("上传成功");
FileUtils.DelectDir(Application.persistentDataPath + "/Log");
this.LogStart();
}
});
}
}
unity 错误日志上传服务器
最新推荐文章于 2023-04-06 14:49:36 发布