diff --git a/Components/MineSharp.Protocol/MinecraftClient.cs b/Components/MineSharp.Protocol/MinecraftClient.cs index 7c16609a..fffe8d14 100644 --- a/Components/MineSharp.Protocol/MinecraftClient.cs +++ b/Components/MineSharp.Protocol/MinecraftClient.cs @@ -441,6 +441,7 @@ private void DispatchPacket(IPacket packet) lock (streamLock) { + Logger.Trace("Sending packet {packetType}", packet.Type); stream!.WritePacket(buffer); } } @@ -453,7 +454,8 @@ private async Task HandleIncomingPacket(PacketType packetType, PacketBuffer buff // - MinecraftClient.WaitForPacket() // - MinecraftClient.OnPacketReceived <-- Forces all packets to be parsed // - The internal IPacketHandler - + + Logger.Trace("Received packet {packetType}", packetType); var factory = PacketPalette.GetFactory(packetType); if (factory == null) { diff --git a/MineSharp.Bot/MineSharpBot.cs b/MineSharp.Bot/MineSharpBot.cs index 312effa8..7b82acdb 100644 --- a/MineSharp.Bot/MineSharpBot.cs +++ b/MineSharp.Bot/MineSharpBot.cs @@ -180,4 +180,23 @@ private Task OnClientDisconnected(MinecraftClient sender, ChatComponent.Chat rea { return OnBotDisconnected.Dispatch(this, reason); } + + /// + /// Enable debug logs of minesharp to be written to the console and a log file. + /// Trace logs are only written to the logfile. + /// + /// if true, also log trace messages. + public static void EnableDebugLogs(bool trace = false) + { + var configuration = new NLog.Config.LoggingConfiguration(); + + var logfile = new NLog.Targets.FileTarget("customfile") { FileName = $"{DateTime.Now:dd.MM.yyyy hh:mm:ss}.log" }; + var logconsole = new NLog.Targets.ConsoleTarget("logconsole"); + + var level = trace ? LogLevel.Trace : LogLevel.Debug; + configuration.AddRule(level, LogLevel.Fatal, logfile); + configuration.AddRule(LogLevel.Debug, LogLevel.Fatal, logconsole); + + LogManager.Configuration = configuration; + } }