Exemple #1
0
        private static void FillParsedConverterParams(ParsedConverterParams parsedParams, KeyValuePair <string, string> val, string context)
        {
            Contract.Requires(parsedParams != null);

            switch (val.Key.Trim().ToLower())
            {
            case "format":
                parsedParams.Format = val.Value;
                break;

            case "valueonnull":
                parsedParams.ValueOnNull = val.Value;
                break;

            case "prefix":
                parsedParams.Prefix = val.Value;
                break;

            case "suffix":
                parsedParams.Suffix = val.Value;
                break;

            default:
                throw new LoggerMessageTemplateParsingException("Incorrect or unsupported token parameter ('" + val.Key + "'). Possible values: 'Format', 'ValueOnNull', 'Prefix' or 'Suffix'. Context: " + context);
            }
        }
Exemple #2
0
        private static LoggingEventConverterBase ParseConverter(string data, ref int curPos, ConverterFactory factory)
        {
            int startPos = curPos;

            if (startPos > data.Length)
            {
                startPos = data.Length;
            }

            SkipSpaces(data, ref curPos);
            if (curPos >= data.Length)
            {
                throw new LoggerMessageTemplateParsingException("Unexpected end of string. Substitution token end was not found. String: '" + data + "', Position: " + curPos.ToString());
            }


            string key = ReadTerm(data, ref curPos);

            SkipSpaces(data, ref curPos);

            if (curPos >= data.Length)
            {
                throw new LoggerMessageTemplateParsingException("Unexpected end of string. Closing brace for substitution token not found ('}'). Token: '" + data.Substring(startPos) + "', String: '" + data + "', Postion: " + curPos.ToString());
            }

            ParsedConverterParams parsedParams = new ParsedConverterParams();

            while (curPos < data.Length)
            {
                switch (data[curPos])
                {
                case '}':
                    curPos++;
                    return(CreateConverter(key, parsedParams, factory));

                case ',':
                    curPos++;
                    var keyValue = ParseKeyValue(data, ref curPos);
                    FillParsedConverterParams(parsedParams, keyValue, data.Substring(startPos));
                    break;

                default:
                    throw new LoggerMessageTemplateParsingException("Incorrect symbol during parsing token parameters ('" + data[curPos].ToString() + "'). '}' or ',' expected. Token: '" + data.Substring(startPos) + "', String: '" + data + "', Position: " + curPos.ToString());
                }
                SkipSpaces(data, ref curPos);
            }

            throw new LoggerMessageTemplateParsingException("Unexpected end of string. Closing brace for substitution token not found ('}'). Token: '" + data.Substring(startPos) + "', String: '" + data + "', Postion: " + curPos.ToString());
        }
Exemple #3
0
        private static LoggingEventConverterBase WrapByParsedParams(LoggingEventConverterBase src, ParsedConverterParams parsedParams, string defValOnNull)
        {
            Contract.Requires(src != null);
            Contract.Requires(parsedParams != null);

            string prefix = parsedParams.Prefix;

            if (prefix == "")
            {
                prefix = null;
            }

            string suffix = parsedParams.Suffix;

            if (suffix == "")
            {
                suffix = null;
            }

            string valueOnNull = parsedParams.ValueOnNull;

            if (valueOnNull == "")
            {
                valueOnNull = null;
            }
            else if (valueOnNull == null)
            {
                valueOnNull = defValOnNull;
            }

            if (prefix == null && suffix == null && valueOnNull == null)
            {
                return(src);
            }

            return(new LoggingEventConverterExtension(src, prefix, suffix, valueOnNull));
        }
Exemple #4
0
        private static LoggingEventConverterBase CreateConverter(string key, ParsedConverterParams parsedParams, ConverterFactory factory)
        {
            Contract.Requires(key != null);
            Contract.Requires(parsedParams != null);
            Contract.Requires(factory != null);

            ConverterTypes type;

            if (!Substitutions.TryGetValue(key.ToLowerInvariant(), out type))
            {
                throw new LoggerMessageTemplateParsingException("Incorrect or unsupported token name: " + key);
            }

            switch (type)
            {
            case ConverterTypes.LevelConverter:
                return(factory.CreateLevelConverter());

            case ConverterTypes.MachineNameConverter:
                return(WrapByParsedParams(factory.CreateMachineNameConverter(), parsedParams, "??"));

            case ConverterTypes.MachineIpAddressConverter:
                return(WrapByParsedParams(factory.CreateMachineIpAddressConverter(), parsedParams, "??"));

            case ConverterTypes.ProcessNameConverter:
                return(WrapByParsedParams(factory.CreateProcessNameConverter(), parsedParams, "??"));

            case ConverterTypes.ProcessIdConverter:
                return(WrapByParsedParams(factory.CreateProcessIdConverter(), parsedParams, "??"));

            case ConverterTypes.AssemblyConverter:
                return(WrapByParsedParams(factory.CreateAssemblyConverter(), parsedParams, "<no asm>"));

            case ConverterTypes.NamespaceConverter:
                return(WrapByParsedParams(factory.CreateNamespaceConverter(), parsedParams, "<no ns>"));

            case ConverterTypes.ClassConverter:
                return(WrapByParsedParams(factory.CreateClassConverter(), parsedParams, "<no class>"));

            case ConverterTypes.MethodConverter:
                return(WrapByParsedParams(factory.CreateMethodConverter(), parsedParams, "<no method>"));

            case ConverterTypes.MessageConverter:
                return(WrapByParsedParams(factory.CreateMessageConverter(), parsedParams, "<no msg>"));

            case ConverterTypes.ContextConverter:
                return(WrapByParsedParams(factory.CreateContextConverter(), parsedParams, null));

            case ConverterTypes.ExceptionConverter:
                return(WrapByParsedParams(factory.CreateExceptionConverter(), parsedParams, "<no exception>"));

            case ConverterTypes.StackSourceConverter:
                return(WrapByParsedParams(factory.CreateStackSourceConverter(), parsedParams, "??"));

            case ConverterTypes.StackSourceHeadConverter:
                return(WrapByParsedParams(factory.CreateStackSourceHeadConverter(), parsedParams, null));

            case ConverterTypes.StackSourceTailConverter:
                return(WrapByParsedParams(factory.CreateStackSourceTailConverter(), parsedParams, null));

            case ConverterTypes.DateConverter:
                return(factory.CreateDateConverter(parsedParams.Format));

            default:
                throw new ArgumentException(string.Format("Unknown ConverterTypes value: \"{0}\"", type.ToString()));
            }
        }