Log: Also log filename and line number of caller

This commit is contained in:
Simon Lübeß
2024-01-20 21:23:34 +01:00
parent 55eef017e7
commit 02be6d8eb7
7 changed files with 160 additions and 87 deletions
+43 -21
View File
@@ -1,4 +1,6 @@
using System;
using System.Diagnostics;
using System.Runtime.CompilerServices;
namespace GlitchyEngine;
@@ -20,95 +22,115 @@ public class Log
Critical,
Off
}
/// <summary>
/// Logs a trace message.
/// </summary>
/// <param name="message">The message to log.</param>
public static void Trace(string message)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Trace(string message, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Trace, message);
ScriptGlue.Log_LogMessage(LogLevel.Trace, message, callerFilePath, callerLineNumber);
}
/// <summary>
/// Logs an info message.
/// </summary>
/// <param name="message">The message to log.</param>
public static void Info(string message)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Info(string message, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Info, message);
ScriptGlue.Log_LogMessage(LogLevel.Info, message, callerFilePath, callerLineNumber);
}
/// <summary>
/// Logs a warning message.
/// </summary>
/// <param name="message">The message to log.</param>
public static void Warning(string message)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Warning(string message, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Warning, message);
ScriptGlue.Log_LogMessage(LogLevel.Warning, message, callerFilePath, callerLineNumber);
}
/// <summary>
/// Logs an error message.
/// </summary>
/// <param name="message">The message to log.</param>
public static void Error(string message)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Error(string message, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Error, message);
ScriptGlue.Log_LogMessage(LogLevel.Error, message, callerFilePath, callerLineNumber);
}
/// <summary>
/// Logs a critical error message.
/// </summary>
/// <param name="message">The message to log.</param>
public static void Critical(string message)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Critical(string message, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Critical, message);
ScriptGlue.Log_LogMessage(LogLevel.Critical, message, callerFilePath, callerLineNumber);
}
/// <summary>
/// Serializes the given object (using <see cref="object.ToString"/>) and logs it as a trace message.
/// </summary>
/// <param name="obj">The object to serialize.</param>
public static void Trace(object obj)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Trace(object obj, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Trace, obj.ToString());
ScriptGlue.Log_LogMessage(LogLevel.Trace, obj.ToString(), callerFilePath, callerLineNumber);
}
/// <summary>
/// Serializes the given object (using <see cref="object.ToString"/>) and logs it as an info message.
/// </summary>
/// <param name="obj">The object to serialize.</param>
public static void Info(object obj)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Info(object obj, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Info, obj.ToString());
ScriptGlue.Log_LogMessage(LogLevel.Info, obj.ToString(), callerFilePath, callerLineNumber);
}
/// <summary>
/// Serializes the given object (using <see cref="object.ToString"/>) and logs it as a warning message.
/// </summary>
/// <param name="obj">The object to serialize.</param>
public static void Warning(object obj)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Warning(object obj, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Warning, obj.ToString());
ScriptGlue.Log_LogMessage(LogLevel.Warning, obj.ToString(), callerFilePath, callerLineNumber);
}
/// <summary>
/// Serializes the given object (using <see cref="object.ToString"/>) and logs it as an error message.
/// </summary>
/// <param name="obj">The object to serialize.</param>
public static void Error(object obj)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Error(object obj, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Error, obj.ToString());
ScriptGlue.Log_LogMessage(LogLevel.Error, obj.ToString(), callerFilePath, callerLineNumber);
}
/// <summary>
/// Serializes the given object (using <see cref="object.ToString"/>) and logs it as a critical error message.
/// </summary>
/// <param name="obj">The object to serialize.</param>
public static void Critical(object obj)
/// <param name="callerFilePath">File path of the caller.</param>
/// <param name="callerLineNumber">Line number of the caller.</param>
public static void Critical(object obj, [CallerFilePath]string callerFilePath = "", [CallerLineNumber]int callerLineNumber = 0)
{
ScriptGlue.Log_LogMessage(LogLevel.Critical, obj.ToString());
ScriptGlue.Log_LogMessage(LogLevel.Critical, obj.ToString(), callerFilePath, callerLineNumber);
}
/// <summary>
+1 -1
View File
@@ -14,7 +14,7 @@ internal static class ScriptGlue
#region Log
[MethodImpl(MethodImplOptions.InternalCall)]
internal static extern void Log_LogMessage(Log.LogLevel logLevel, string message);
internal static extern void Log_LogMessage(Log.LogLevel logLevel, string message, string filePath, int line);
[MethodImpl(MethodImplOptions.InternalCall)]