MosswartMassacre/Shared/Debug.cs
2025-05-12 20:27:00 +02:00

139 lines
3.7 KiB
C#

using System;
using System.Globalization;
using System.IO;
using Decal.Adapter;
namespace Mag.Shared
{
static class Debug
{
static string _debugLogPath;
static string _errorLogPath;
static string _pluginName;
public static void Init(string debugLogPath, string errorLogPath, string pluginName)
{
_debugLogPath = debugLogPath;
_errorLogPath = errorLogPath;
_pluginName = pluginName;
}
/// <summary>
/// This will write to the debug.txt
/// </summary>
public static void LogDebug(string message)
{
try
{
if (String.IsNullOrEmpty(_debugLogPath))
return;
FileInfo fileInfo = new FileInfo(_debugLogPath);
// Limit the file to 1MB
bool append = !(fileInfo.Exists && fileInfo.Length > 1048576);
using (StreamWriter writer = new StreamWriter(fileInfo.FullName, append))
{
writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "," + message);
writer.Close();
}
}
catch
{
// Eat the exception, yumm.
}
}
/// <summary>
/// This will only write the exception to the errors.txt file if DebugEnabled is true.
/// </summary>
public static void LogException(Exception ex, string note = null)
{
try
{
//if (!Settings.SettingsManager.Misc.DebuggingEnabled.Value)
// return;
if (note != null)
MyClasses.VCS_Connector.SendChatTextCategorized("Errors", "<{" + _pluginName + "}>: " + "Exception caught: " + ex.Message + Environment.NewLine + ex.Source + Environment.NewLine + ex.StackTrace + Environment.NewLine + "Note: " + note, 5);
else
MyClasses.VCS_Connector.SendChatTextCategorized("Errors", "<{" + _pluginName + "}>: " + "Exception caught: " + ex.Message + Environment.NewLine + ex.Source + Environment.NewLine + ex.StackTrace, 5);
if (String.IsNullOrEmpty(_errorLogPath))
return;
FileInfo fileInfo = new FileInfo(_errorLogPath);
// Limit the file to 1MB
bool append = !(fileInfo.Exists && fileInfo.Length > 1048576);
using (StreamWriter writer = new StreamWriter(fileInfo.FullName, append))
{
writer.WriteLine("============================================================================");
writer.WriteLine(DateTime.Now.ToString(CultureInfo.InvariantCulture));
writer.WriteLine(ex);
if (note != null)
writer.WriteLine("Note: " + note);
writer.WriteLine("============================================================================");
writer.WriteLine("");
writer.Close();
}
}
catch
{
// Eat the exception, yumm.
}
}
public static void LogText(string text)
{
try
{
//if (!Settings.SettingsManager.Misc.DebuggingEnabled.Value)
// return;
MyClasses.VCS_Connector.SendChatTextCategorized("CommandLine", "<{" + _pluginName + "}>: " + "Log Text: " + text, 5);
if (String.IsNullOrEmpty(_errorLogPath))
return;
FileInfo fileInfo = new FileInfo(_errorLogPath);
// Limit the file to 1MB
bool append = !(fileInfo.Exists && fileInfo.Length > 1048576);
using (StreamWriter writer = new StreamWriter(fileInfo.FullName, append))
{
writer.WriteLine(DateTime.Now + ": " + text);
writer.Close();
}
}
catch (Exception ex) { LogException(ex); }
}
/// <summary>
/// This will only write the message to the chat if DebugEnabled is true.
/// </summary>
/// <param name="message"></param>
/// <param name="color"></param>
/// <param name="target"></param>
public static void WriteToChat(string message, int color = 5, int target = 1)
{
try
{
//if (!Settings.SettingsManager.Misc.DebuggingEnabled.Value)
// return;
MyClasses.VCS_Connector.SendChatTextCategorized("CommandLine", "<{" + _pluginName + "}>: " + message, color, target);
}
catch (Exception ex) { LogException(ex); }
}
}
}