Skip to content

Instantly share code, notes, and snippets.

@glebov21
Last active June 2, 2025 15:37
Show Gist options
  • Save glebov21/72d332695d7777934089ab2c04059710 to your computer and use it in GitHub Desktop.
Save glebov21/72d332695d7777934089ab2c04059710 to your computer and use it in GitHub Desktop.
Unity Trace Listener
using System.Diagnostics;
using System.Text;
using UnityEngine;
public class UnityTraceListenerScript : MonoBehaviour
{
private void Awake()
{
Trace.Listeners.Add(new UnityTraceListener());
Trace.AutoFlush = true;
//Trace.TraceInformation("Trace.Information");
//Trace.TraceWarning("Trace.Warning");
//Trace.TraceError("Trace.Error");
//Trace.WriteLine("Trace.WriteLine");
//Trace.Assert(false, "Trace.Assert");
//Trace.Fail("Trace.Fail");
}
private class UnityTraceListener : TraceListener
{
public override void Write(string message)
{
UnityEngine.Debug.Log(message);
}
public override void WriteLine(string message)
{
UnityEngine.Debug.Log(message);
}
public override void Fail(string message, string detailMessage)
{
StringBuilder failMessage = new StringBuilder();
failMessage.Append(message);
if (detailMessage != null)
{
failMessage.Append(" ");
failMessage.Append(detailMessage);
}
UnityEngine.Debug.LogError(failMessage.ToString());
}
public override void TraceEvent(TraceEventCache eventCache, string source,
TraceEventType eventType, int id, string message)
{
switch (eventType)
{
case TraceEventType.Critical:
case TraceEventType.Error:
UnityEngine.Debug.LogError(message);
break;
case TraceEventType.Warning:
UnityEngine.Debug.LogWarning(message);
break;
case TraceEventType.Information:
case TraceEventType.Verbose:
default:
UnityEngine.Debug.Log(message);
break;
}
}
public override void TraceEvent(TraceEventCache eventCache, string source,
TraceEventType eventType, int id, string format,
params object[] args)
{
TraceEvent(eventCache, source, eventType, id, string.Format(format, args));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment