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 }; } }