TrueCraft/TrueCraft.Core/Logging/PacketLogging.cs

21 lines
842 B
C#
Raw Normal View History

using System;
using TrueCraft.API.Networking;
using TrueCraft.API.Logging;
namespace TrueCraft.Core.Logging
{
public static class PacketLogging
{
public static void Log(this IPacket packet, ILogProvider log, bool clientToServer = false)
{
if (clientToServer)
log.Log(LogCategory.Packets, "[CLIENT > SERVER] 0x{0:X2} {1}", packet.ID, packet.GetType().Name);
else
log.Log(LogCategory.Packets, "[SERVER > CLIENT] 0x{0:X2} {1}", packet.ID, packet.GetType().Name);
foreach (var prop in packet.GetType().GetFields())
log.Log(LogCategory.Packets, "\t{0} ({1}): {2}", prop.Name, prop.FieldType.Name, prop.GetValue(packet));
log.Log(LogCategory.Packets, ""); // newline
// TODO: Log packet payload
}
}
}