Files
SharpIDE/src/SharpIDE.Application/Features/Logging/InternalTerminalLoggerFactory.cs
Matt Parker 5e4cefe71b refactor
2025-08-01 21:17:06 +10:00

41 lines
1.1 KiB
C#

using System.Reflection;
using Microsoft.Build.Framework;
namespace SharpIDE.Application.Features.Logging;
public class InternalTerminalLoggerFactory
{
public static ILogger CreateLogger()
{
var logger = CreateLogger("FORCECONSOLECOLOR", LoggerVerbosity.Minimal);
return logger;
}
public static ILogger CreateLogger(string parameters, LoggerVerbosity loggerVerbosity)
{
var type = Type.GetType("Microsoft.Build.Logging.TerminalLogger, Microsoft.Build");
if (type == null) throw new Exception("TerminalLogger type not found");
var method = type.GetMethod(
"CreateTerminalOrConsoleLogger",
BindingFlags.NonPublic | BindingFlags.Static);
if (method == null) throw new Exception("CreateTerminalOrConsoleLogger method not found");
string[]? args = [];
bool supportsAnsi = true;
bool outputIsScreen = true;
uint? originalConsoleMode = 0x0007;
object? logger = method.Invoke(
obj: null,
parameters: [args, supportsAnsi, outputIsScreen, originalConsoleMode]);
var castLogger = (ILogger)logger!;
castLogger.Parameters = parameters;
castLogger.Verbosity = loggerVerbosity;
return castLogger;
}
}