Пример #1
0
        public LogValuesFormatter(string format)
        {
            OriginalFormat = format;

            var sb        = new StringBuilder();
            var scanIndex = 0;
            var endIndex  = format.Length;

            while (scanIndex < endIndex)
            {
                var openBraceIndex  = FindBraceIndex(format, '{', scanIndex, endIndex);
                var closeBraceIndex = FindBraceIndex(format, '}', openBraceIndex, endIndex);

                if (closeBraceIndex == endIndex)
                {
                    sb.Append(format, scanIndex, endIndex - scanIndex);
                    scanIndex = endIndex;
                }
                else
                {
                    // Format item syntax : { index[,alignment][ :formatString] }.
                    var formatDelimiterIndex = FindIndexOfAny(format, FormatDelimiters, openBraceIndex, closeBraceIndex);

                    sb.Append(format, scanIndex, openBraceIndex - scanIndex + 1);
                    sb.Append(ValueNames.Count.ToString(CultureInfo.InvariantCulture));
                    ValueNames.Add(format.Substring(openBraceIndex + 1, formatDelimiterIndex - openBraceIndex - 1));
                    sb.Append(format, formatDelimiterIndex, closeBraceIndex - formatDelimiterIndex + 1);

                    scanIndex = closeBraceIndex + 1;
                }
            }

            _format = sb.ToString();
        }
Пример #2
0
 public decimal this[string column]
 {
     get
     {
         int index = ValueNames.IndexOf(column);
         return(this[index]);
     }
     set
     {
         int index = ValueNames.IndexOf(column);
         this[index] = value;
     }
 }
Пример #3
0
        public LogValuesFormatter(string format, IReadOnlyCollection <object> args, string scope = null)
        {
            // Holds the list of placeholders that do not have corresponding values in the structured log.
            var placeholdersMismatchedArgs = new List <string>();

            _scope         = scope;
            OriginalFormat = format;

            var sb        = new StringBuilder();
            var scanIndex = 0;
            var endIndex  = format.Length;

            var expectedNumberOfArgs = scope != null ? args.Count + 1 : args.Count;

            while (scanIndex < endIndex)
            {
                var openBraceIndex  = FindBraceIndex(format, '{', scanIndex, endIndex);
                var closeBraceIndex = FindBraceIndex(format, '}', openBraceIndex, endIndex);

                if (closeBraceIndex == endIndex)
                {
                    sb.Append(format, scanIndex, endIndex - scanIndex);
                    scanIndex = endIndex;
                }
                else
                {
                    // Format item syntax : { index[,alignment][ :formatString] }.
                    var formatDelimiterIndex = FindIndexOfAny(format, FormatDelimiters, openBraceIndex, closeBraceIndex);

                    if (ValueNames.Count < expectedNumberOfArgs)
                    {
                        sb.Append(format, scanIndex, openBraceIndex - scanIndex + 1);
                        sb.Append(ValueNames.Count.ToString(CultureInfo.InvariantCulture));
                        ValueNames.Add(format.Substring(openBraceIndex + 1, formatDelimiterIndex - openBraceIndex - 1));
                        sb.Append(format, formatDelimiterIndex, closeBraceIndex - formatDelimiterIndex + 1);
                    }
                    else
                    {
                        placeholdersMismatchedArgs.Add(format.Substring(openBraceIndex + 1, formatDelimiterIndex - openBraceIndex - 1));
                    }

                    scanIndex = closeBraceIndex + 1;
                }
            }

            if (placeholdersMismatchedArgs.Count > 0)
            {
                sb.Append(
                    $" Warning: This line is from an invalid structured log which should be fixed and may not be complete: "
                    + $"number of arguments is not matching the number of placeholders, placeholders with missing values: {string.Join(", ", placeholdersMismatchedArgs)}");
            }

            if (ValueNames.Count != expectedNumberOfArgs)
            {
                sb.Append(
                    $" Warning: This line is from an invalid structured log which should be fixed and may not be complete: "
                    + $"number of placeholders in the log message does not match the number of parameters. Argument values without placeholders: {string.Join(", ", args.Skip(ValueNames.Count))}");
            }

            _format = sb.ToString();
        }
 protected virtual bool GetIsAutoStartEntry(RegistryKey currentKey, string valueName, int level)
 {
     return(ValueNames == null || ValueNames.Contains(valueName));
 }
Пример #5
0
        public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
        {
            var result = ValueNames.All(value => controllerContext.HttpContext.Request[value] != null);

            return(result);
        }
Пример #6
0
        static void Main(string[] args)
        {
            if (args.Contains("?") ||
                args.Contains("-h", StringComparer.OrdinalIgnoreCase) ||
                args.Contains("h", StringComparer.OrdinalIgnoreCase) ||
                args.Contains("-help", StringComparer.OrdinalIgnoreCase) ||
                args.Contains("help", StringComparer.OrdinalIgnoreCase))
            {
                //Output Help Details
                printHelp();
                Environment.Exit(0); //Exit program after outputing message
            }

            /*
             * INPUT
             *   Path           Assembly Path (dll or exe)
             *   ValueName      (Optional) Defaults to Version if no value is provided
             *                  Expected Values:
             *                      Version
             *                      Company
             *                      Copyright
             *                      Description
             *                      Product
             *                      Title
             *                      Trademark
             *
             * Exit Codes
             *    0             Success
             *   -1             Assembly Path could not be found
             *   -2             Value passed for ValueName is invalid
             */
            switch (args.Count())
            {
            case 0:
                printHelp();
                Environment.Exit(0);     //Exit program after outputing message
                break;

            case 1:
                filePath = File.Exists(args[0]) ? args[0] : null;
                //valueName = ValueNames.Version;
                break;

            case 2:
                filePath = File.Exists(args[0]) ? args[0] : null;
                try { valueName = (ValueNames)Enum.Parse(typeof(ValueNames), args[1], true); }
                catch { Environment.Exit(-2); }     //args[1] was not a valid type
                break;

            default:
                filePath = null;
                break;
            }
            //If file path is invalid exit with error
            if (filePath == null)
            {
                Environment.Exit(-1);                   //args[0] could not be found
            }
            try
            {
                Assembly assembly = Assembly.LoadFile(filePath);
                switch (valueName)
                {
                case ValueNames.Version:
                    output = assembly.GetName().Version.ToString();
                    break;

                case ValueNames.Company:
                    output = ((AssemblyCompanyAttribute)(assembly.GetCustomAttributes(typeof(AssemblyCompanyAttribute), true)[0]))?.Company ?? "";
                    break;

                case ValueNames.Copyright:
                    output = ((AssemblyCopyrightAttribute)(assembly.GetCustomAttributes(typeof(AssemblyCopyrightAttribute), true)[0]))?.Copyright ?? "";
                    break;

                case ValueNames.Description:
                    output = ((AssemblyDescriptionAttribute)(assembly.GetCustomAttributes(typeof(AssemblyDescriptionAttribute), true)[0]))?.Description ?? "";
                    break;

                case ValueNames.Product:
                    output = ((AssemblyProductAttribute)(assembly.GetCustomAttributes(typeof(AssemblyProductAttribute), true)[0]))?.Product ?? "";
                    break;

                case ValueNames.Title:
                    output = ((AssemblyTitleAttribute)(assembly.GetCustomAttributes(typeof(AssemblyTitleAttribute), true)[0]))?.Title ?? "";
                    break;

                case ValueNames.Trademark:
                    output = ((AssemblyTrademarkAttribute)(assembly.GetCustomAttributes(typeof(AssemblyTrademarkAttribute), true)[0]))?.Trademark ?? "";
                    break;
                }
                assembly = null;
            } catch (BadImageFormatException)
            {
                FileVersionInfo exe = FileVersionInfo.GetVersionInfo(filePath);
                switch (valueName)
                {
                case ValueNames.Version:
                    output = exe?.ProductVersion ?? "";
                    break;

                case ValueNames.Company:
                    output = exe?.CompanyName ?? "";
                    break;

                case ValueNames.Copyright:
                    output = exe?.LegalCopyright ?? "";
                    break;

                case ValueNames.Description:
                    output = exe?.FileDescription ?? "";
                    break;

                case ValueNames.Product:
                    output = exe?.ProductName ?? "";
                    break;

                case ValueNames.Title:
                    output = exe?.ProductName ?? "";
                    break;

                case ValueNames.Trademark:
                    output = exe?.LegalTrademarks ?? "";
                    break;
                }
                exe = null;
            }
            Console.Write(output);
        }