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;
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
            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);
            }