| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 
							- using System;
 
- using System.Collections.Generic;
 
- using BepInEx.Configuration;
 
- using HarmonyLogger = HarmonyLib.Tools.Logger;
 
- namespace BepInEx.Logging
 
- {
 
- 	public class HarmonyLogSource : ILogSource
 
- 	{
 
- 		private static readonly ConfigEntry<HarmonyLogger.LogChannel> LogChannels = ConfigFile.CoreConfig.Bind(
 
- 			"Harmony.Logger",
 
- 			"LogChannels",
 
- 			HarmonyLogger.LogChannel.Warn | HarmonyLogger.LogChannel.Error,
 
- 			"Specifies which Harmony log channels to listen to.\nNOTE: IL channel dumps the whole patch methods, use only when needed!");
 
- 		private static readonly Dictionary<HarmonyLogger.LogChannel, LogLevel> LevelMap = new Dictionary<HarmonyLogger.LogChannel, LogLevel>
 
- 		{
 
- 			[HarmonyLogger.LogChannel.Info] = LogLevel.Info,
 
- 			[HarmonyLogger.LogChannel.Warn] = LogLevel.Warning,
 
- 			[HarmonyLogger.LogChannel.Error] = LogLevel.Error,
 
- 			[HarmonyLogger.LogChannel.IL] = LogLevel.Debug
 
- 		};
 
- 		public HarmonyLogSource()
 
- 		{
 
- 			HarmonyLogger.ChannelFilter = LogChannels.Value;
 
- 			HarmonyLogger.MessageReceived += HandleHarmonyMessage;
 
- 		}
 
- 		private void HandleHarmonyMessage(object sender, HarmonyLib.Tools.Logger.LogEventArgs e)
 
- 		{
 
- 			if (!LevelMap.TryGetValue(e.LogChannel, out var level))
 
- 				return;
 
- 			LogEvent?.Invoke(this, new LogEventArgs(e.Message, level, this));
 
- 		}
 
- 		public void Dispose()
 
- 		{
 
- 			HarmonyLogger.MessageReceived -= HandleHarmonyMessage;
 
- 		}
 
- 		public string SourceName { get; } = "Harmony";
 
- 		public event EventHandler<LogEventArgs> LogEvent;
 
- 	}
 
- }
 
 
  |