internal void SystemLog(RpcEvent msg) { RpcLog systemLog = msg.Message.RpcLog; LogLevel logLevel = (LogLevel)systemLog.Level; switch (logLevel) { case LogLevel.Warning: _workerChannelLogger.LogWarning(systemLog.Message); break; case LogLevel.Information: _workerChannelLogger.LogInformation(systemLog.Message); break; case LogLevel.Error: { if (systemLog.Exception != null) { RpcException exception = new RpcException(systemLog.Message, systemLog.Exception.Message, systemLog.Exception.StackTrace); _workerChannelLogger.LogError(exception, systemLog.Message); } else { _workerChannelLogger.LogError(systemLog.Message); } } break; default: _workerChannelLogger.LogInformation(systemLog.Message); break; } }
public void Log <TState>(LogLevel logLevel, EventId eventId, TState state, Exception exception, Func <TState, Exception, string> formatter) { var response = new StreamingMessage(); string message = formatter(state, exception); var rpcLog = new RpcLog { EventId = eventId.ToString(), Exception = exception.ToRpcException(), Category = _category, LogCategory = WorkerMessage.IsSystemLog ? RpcLogCategory.System : RpcLogCategory.User, Level = ToRpcLogLevel(logLevel), Message = message }; // Grab the invocation id from the current scope, if present. _scopeProvider.ForEachScope((scope, log) => { if (scope is IEnumerable <KeyValuePair <string, object> > properties) { foreach (KeyValuePair <string, object> pair in properties) { if (pair.Key == FunctionInvocationScope.FunctionInvocationIdKey) { log.InvocationId = pair.Value?.ToString(); break; } } } }, rpcLog); response.RpcLog = rpcLog; _channelWriter.TryWrite(response); }
public void PublishSystemLogEvent(RpcLog.Types.Level inputLevel) { RpcLog rpcLog = new RpcLog() { LogCategory = RpcLog.Types.RpcLogCategory.System, Level = inputLevel, Message = "Random system log message", }; StreamingMessage logMessage = new StreamingMessage() { RpcLog = rpcLog }; _eventManager.Publish(new InboundGrpcEvent(_workerId, logMessage)); }
public static RpcLog Deserialize(SelfDecoder.BinaryLog source) { var log = new RpcLog(); log.Type = (Shared.RpcCalls)source.LogData[0]; var buffer = new byte[4]; Buffer.BlockCopy(source.LogData, 1, buffer, 0, 4); log.GameCode = BitConverter.ToInt32(buffer, 0); Buffer.BlockCopy(source.LogData, 5, buffer, 0, 4); log.IpAddress = new IPAddress(buffer).ToString(); buffer = new byte[source.LogData.Length - 9]; Buffer.BlockCopy(source.LogData, 9, buffer, 0, buffer.Length); log.RpcData = buffer; return(log); }