using System;
using System.Runtime.CompilerServices;
using BepInEx.ConsoleUtil;
namespace BepInEx.Logging
{
///
/// Logs entries using Unity specific outputs.
///
public class UnityLogWriter : BaseLogger
{
///
/// Writes a string specifically to the game output log.
///
/// The value to write.
public void WriteToLog(string value)
{
UnityEngine.UnityLogWriter.WriteStringToUnityLog(value);
}
protected void InternalWrite(string value)
{
Console.Write(value);
WriteToLog(value);
}
///
/// Logs an entry to the Logger instance.
///
/// The level of the entry.
/// The textual value of the entry.
public override void Log(LogLevel level, object entry)
{
Kon.ForegroundColor = level.GetConsoleColor();
base.Log(level, entry);
Kon.ForegroundColor = ConsoleColor.Gray;
}
public override void WriteLine(string value) => InternalWrite($"{value}\r\n");
public override void Write(char value) => InternalWrite(value.ToString());
public override void Write(string value) => InternalWrite(value);
}
}
namespace UnityEngine
{
internal sealed class UnityLogWriter
{
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern void WriteStringToUnityLog(string s);
}
}