Exemple #1
0
        /// <summary>
        /// Checks a <see cref="LogEventPropertyValue"/> to have the correct data value type.
        /// </summary>
        /// <param name="receivedPropertyName">The key to use when writing the data value as GELF property.</param>
        /// <param name="property">The <see cref="LogEventPropertyValue"/> containing the data value.</param>
        /// <returns>A <see cref="GraylogPropertyCheckResult"/> with the check result.</returns>
        public GraylogPropertyCheckResult CheckProperty(string receivedPropertyName, LogEventPropertyValue property)
        {
            var res = new GraylogPropertyCheckResult {
                ReceivedPropertyName = receivedPropertyName
            };
            var pos = IndexOfKey(receivedPropertyName);

            if (pos == -1)
            {
                res.CheckResult |= GraylogPropertyCheckResultType.ErrorNameNotRegistered;
                return(res);
            }
            res.ExpectedPropertyName = Keys[pos];
            if (!receivedPropertyName.Equals(res.ExpectedPropertyName))
            {
                res.CheckResult |= GraylogPropertyCheckResultType.ErrorNameSpelling;
            }
            res.PropertyValue = GetValue(property, out var receivedType);
            var expectedType = Values[pos];

            if (expectedType == GraylogPropertyType.Object && receivedType != GraylogPropertyType.String || !expectedType.HasFlag(receivedType))
            {
                res.CheckResult      |= GraylogPropertyCheckResultType.ErrorValueTypeNotMatching;
                res.ExpectedValueType = expectedType;
                res.ReceivedValueType = receivedType;
            }
            return(res);
        }
Exemple #2
0
        private GelfMessage CreatePropertyErrorMessage(GraylogPropertyCheckResult propCheckResult)
        {
            var propertyErrorMessageBuilder = CreateGelfMessageBuilder("Error in property name/type check.", DateTime.UtcNow, GelfLevel.Error);

            if (string.IsNullOrEmpty(propCheckResult.ExpectedPropertyName))
            {
                propertyErrorMessageBuilder.SetAdditionalField($"{_config.PropertyPrefix}expectedPropertyName", propCheckResult.ExpectedPropertyName);
            }
            if (string.IsNullOrEmpty(propCheckResult.ReceivedPropertyName))
            {
                propertyErrorMessageBuilder.SetAdditionalField($"{_config.PropertyPrefix}receivedPropertyName", propCheckResult.ReceivedPropertyName);
            }
            if (propCheckResult.ExpectedValueType != GraylogPropertyType.Undefined)
            {
                propertyErrorMessageBuilder.SetAdditionalField($"{_config.PropertyPrefix}expectedPropertyType", propCheckResult.ExpectedValueType.ToString());
            }
            if (propCheckResult.ReceivedValueType != GraylogPropertyType.Undefined)
            {
                propertyErrorMessageBuilder.SetAdditionalField($"{_config.PropertyPrefix}receivedPropertyType", propCheckResult.ReceivedValueType.ToString());
            }
            return(propertyErrorMessageBuilder.ToMessage());
        }