Ejemplo n.º 1
0
        public void Publish(LogMessage logMessage)
        {
            if (string.IsNullOrEmpty(_host))
            {
                return;
            }

            var str = _loggerFormatter.ApplyFormat(logMessage);

            var builder = new GelfMessageBuilder(str, "Heroes Rage, " + Application.platform);

            var level = GelfLevel.Debug;

            if (logMessage.Level == SimpleLogger.Logger.Level.Error)
            {
                level = GelfLevel.Error;
            }
            else if (logMessage.Level == SimpleLogger.Logger.Level.Warning)
            {
                level = GelfLevel.Warning;
            }

            builder.SetLevel(level);
            builder.SetTimestamp(DateTime.Now);

            if (!string.IsNullOrEmpty(_username))
            {
                builder.SetAdditionalField("user_name", _username);
            }

            if (!string.IsNullOrEmpty(_buildVersion))
            {
                builder.SetAdditionalField("build", _buildVersion);
            }

            if (!string.IsNullOrEmpty(_deviceName))
            {
                builder.SetAdditionalField("device_name", _deviceName);
            }

            if (!string.IsNullOrEmpty(_deviceModel))
            {
                builder.SetAdditionalField("device_model", _deviceModel);
            }

            if (!string.IsNullOrEmpty(_deviceUniqueIdentifier))
            {
                builder.SetAdditionalField("device_id", _deviceUniqueIdentifier);
            }

            if (!string.IsNullOrEmpty(logMessage.CallingClass))
            {
                builder.SetAdditionalField("calling_class", logMessage.CallingClass);
            }

            if (!string.IsNullOrEmpty(logMessage.CallingMethod))
            {
                builder.SetAdditionalField("calling_method", logMessage.CallingMethod);
            }

            if (logMessage.LineNumber > 0)
            {
                builder.SetAdditionalField("line_number", logMessage.LineNumber.ToString());
            }

            var mes = _gelfSerializer.Serialize(builder.ToMessage());

            Debug.Log("Mes = " + mes);

            PushMessage(encoding.GetBytes(mes));
        }