using MLAPI.Configuration; using MLAPI.Messaging; using MLAPI.Serialization.Pooled; using MLAPI.Transports; using UnityEngine; namespace MLAPI.Logging { /// /// Helper class for logging /// public static class NetworkLog { /// /// Gets the current log level. /// /// The current log level. internal static LogLevel CurrentLogLevel => NetworkManager.Singleton == null ? LogLevel.Normal : NetworkManager.Singleton.LogLevel; // MLAPI internal logging internal static void LogInfo(string message) => Debug.Log($"[MLAPI] {message}"); internal static void LogWarning(string message) => Debug.LogWarning($"[MLAPI] {message}"); internal static void LogError(string message) => Debug.LogError($"[MLAPI] {message}"); /// /// Logs an info log locally and on the server if possible. /// /// The message to log public static void LogInfoServer(string message) => LogServer(message, LogType.Info); /// /// Logs a warning log locally and on the server if possible. /// /// The message to log public static void LogWarningServer(string message) => LogServer(message, LogType.Warning); /// /// Logs an error log locally and on the server if possible. /// /// The message to log public static void LogErrorServer(string message) => LogServer(message, LogType.Error); private static void LogServer(string message, LogType logType) { // Get the sender of the local log ulong localId = NetworkManager.Singleton != null ? NetworkManager.Singleton.LocalClientId : 0; switch (logType) { case LogType.Info: LogInfoServerLocal(message, localId); break; case LogType.Warning: LogWarningServerLocal(message, localId); break; case LogType.Error: LogErrorServerLocal(message, localId); break; } if (NetworkManager.Singleton != null && !NetworkManager.Singleton.IsServer && NetworkManager.Singleton.NetworkConfig.EnableNetworkLogs) { using (var buffer = PooledNetworkBuffer.Get()) using (var writer = PooledNetworkWriter.Get(buffer)) { writer.WriteByte((byte)logType); writer.WriteStringPacked(message); InternalMessageSender.Send(NetworkManager.Singleton.ServerClientId, NetworkConstants.SERVER_LOG, NetworkChannel.Internal, buffer); } } } internal static void LogInfoServerLocal(string message, ulong sender) => Debug.Log($"[MLAPI_SERVER Sender={sender}] {message}"); internal static void LogWarningServerLocal(string message, ulong sender) => Debug.LogWarning($"[MLAPI_SERVER Sender={sender}] {message}"); internal static void LogErrorServerLocal(string message, ulong sender) => Debug.LogError($"[MLAPI_SERVER Sender={sender}] {message}"); internal enum LogType { Info, Warning, Error, None } } }