OF-DL/Cajetan.OF-DL/Extensions/LoggingExtensions.cs

44 lines
1.2 KiB
C#

using System.Diagnostics;
namespace OF_DL.Extensions;
internal static class LoggingExtensions
{
extension(Log)
{
public static ILogger ForProcessContext(Process process)
=> Log.Logger.ForProcessContext(process);
public static ILogger ForProcessContext(string propertyName, Process process)
=> Log.Logger.ForProcessContext(propertyName, process);
public static ILogger ForProcessContext(Process[] processes)
=> Log.Logger.ForProcessContext(processes);
}
extension(ILogger logger)
{
public ILogger ForProcessContext(Process process)
=> logger.ForProcessContext($"Process_{process.Id}", process);
public ILogger ForProcessContext(string propertyName, Process process)
=> logger.ForContext(propertyName, process.GenerateContext(), destructureObjects: true);
public ILogger ForProcessContext(Process[] processes)
{
ILogger l = logger;
foreach (Process p in processes)
l = l.ForProcessContext(p);
return l;
}
}
extension(Process p)
{
public object GenerateContext()
=> new { p.Id, p.ProcessName };
}
}