| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Net.Http;
- using System.Text;
- using System.Threading.Tasks;
- using DefaultNamespace.LogTool;
- using UnityEngine;
- using Utility;
- public class LogServer : Singleton<LogServer>
- {
- public string playerID;
- public string gameName = "Editor";
- public string version;
- private string deviceModel;
- private string operatingSystem;
- public void Init(string gameName)
- {
- this.gameName = gameName;
- version = Application.version;
- deviceModel = SystemInfo.deviceName + " " + SystemInfo.deviceModel+" "+SystemInfo.deviceUniqueIdentifier;
- operatingSystem = SystemInfo.operatingSystem;
- }
- public void UpLog(Exception exception)
- {
- try
- {
- LogServeData logServeData = new LogServeData();
- logServeData.hash = GetStackTraceHash(exception);
- logServeData.title = exception.Message;
- logServeData.content = exception.StackTrace;
- logServeData.LogType = 1;
- logServeData.gameName = gameName;
- // logServeData.time = (long)(CombatTimerManager.Instance.TimeSinceStartUp() * 1000);
- logServeData.playerId = playerID;
- logServeData.v = version;
- logServeData.DeviceID = deviceModel;
- logServeData.operatingSystem = operatingSystem;
- UpdatToServer(logServeData);
- }
- catch (Exception e)
- {
- }
- }
- public void UpLog(string title, string messge)
- {
- try
- {
- LogServeData logServeData = new LogServeData();
- logServeData.hash = GetStackTraceHash(title, messge);
- logServeData.title = title;
- logServeData.content = messge;
- logServeData.LogType = 2;
- logServeData.gameName = gameName;
- // logServeData.time = (long)(CombatTimerManager.Instance.TimeSinceStartUp() * 1000);
- logServeData.playerId = playerID;
- logServeData.v = version;
- logServeData.DeviceID = deviceModel;
- logServeData.operatingSystem = operatingSystem;
- UpdatToServer(logServeData);
- }
- catch (Exception e)
- {
- }
- }
- private async Task UpdatToServer(LogServeData logServeData)
- {
- string json = LitJson.JsonMapper.ToJson(logServeData);
- byte[] logData = Encoding.UTF8.GetBytes(json);
- using var httpClient = new HttpClient();
- var content = new ByteArrayContent(logData);
- content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
- var response = await httpClient.PostAsync("http://139.155.99.185:5001/api/logserver/upload", content);
- if (response.IsSuccessStatusCode)
- {
- var result = await response.Content.ReadAsStringAsync();
- // UnityEngine.Debug.Log($"上传成功: {result}");
- }
- // else
- // {
- // UnityEngine.Debug.Log($"上传失败: {response.StatusCode}");
- // }
- }
- private string GetStackTraceHash(string title, string messge)
- {
- var sb = new StringBuilder();
- sb.Append(title);
- sb.Append(messge);
- return GetStackTraceHash(sb);
- }
- private string GetStackTraceHash(Exception ex)
- {
- var trace = new StackTrace(ex, true);
- var sb = new StringBuilder();
- foreach (var frame in trace.GetFrames() ?? Array.Empty<StackFrame>())
- {
- var method = frame.GetMethod();
- if (method?.DeclaringType != null)
- {
- sb.Append(method.DeclaringType.FullName)
- .Append(".")
- .Append(method.Name)
- .Append("()");
- }
- }
- return GetStackTraceHash(sb);
- }
- private string GetStackTraceHash(StringBuilder stringBuilder)
- {
- using var sha = System.Security.Cryptography.SHA1.Create();
- byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(stringBuilder.ToString()));
- return Convert.ToBase64String(hash);
- }
- }
|