summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI
diff options
context:
space:
mode:
Diffstat (limited to 'src/StardewModdingAPI')
-rw-r--r--src/StardewModdingAPI/Framework/Monitor.cs28
-rw-r--r--src/StardewModdingAPI/LogWriter.cs11
2 files changed, 33 insertions, 6 deletions
diff --git a/src/StardewModdingAPI/Framework/Monitor.cs b/src/StardewModdingAPI/Framework/Monitor.cs
index 0989bb7e..b492e5c7 100644
--- a/src/StardewModdingAPI/Framework/Monitor.cs
+++ b/src/StardewModdingAPI/Framework/Monitor.cs
@@ -34,6 +34,9 @@ namespace StardewModdingAPI.Framework
/*********
** Accessors
*********/
+ /// <summary>Whether the current console supports color codes.</summary>
+ internal static readonly bool ConsoleSupportsColor = Monitor.GetConsoleSupportsColor();
+
/// <summary>Whether to show trace messages in the console.</summary>
internal bool ShowTraceInConsole { get; set; }
@@ -113,11 +116,30 @@ namespace StardewModdingAPI.Framework
// log
if (this.WriteToConsole && (this.ShowTraceInConsole || level != LogLevel.Trace))
{
- Console.ForegroundColor = color;
- Console.WriteLine(message);
- Console.ResetColor();
+ if (Monitor.ConsoleSupportsColor)
+ {
+ Console.ForegroundColor = color;
+ Console.WriteLine(message);
+ Console.ResetColor();
+ }
+ else
+ Console.WriteLine(message);
}
this.LogFile.WriteLine(message);
}
+
+ /// <summary>Test whether the current console supports color formatting.</summary>
+ private static bool GetConsoleSupportsColor()
+ {
+ try
+ {
+ Console.ResetColor();
+ return true;
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
}
} \ No newline at end of file
diff --git a/src/StardewModdingAPI/LogWriter.cs b/src/StardewModdingAPI/LogWriter.cs
index 058fa649..9c2ef515 100644
--- a/src/StardewModdingAPI/LogWriter.cs
+++ b/src/StardewModdingAPI/LogWriter.cs
@@ -42,9 +42,14 @@ namespace StardewModdingAPI
string output = $"[{message.LogTime}] {message.Message}";
if (message.PrintConsole)
{
- Console.ForegroundColor = message.Colour;
- Console.WriteLine(message);
- Console.ForegroundColor = ConsoleColor.Gray;
+ if (Monitor.ConsoleSupportsColor)
+ {
+ Console.ForegroundColor = message.Colour;
+ Console.WriteLine(message);
+ Console.ResetColor();
+ }
+ else
+ Console.WriteLine(message);
}
this.LogFile.WriteLine(output);
}