Пример #1
0
 public CLogDecodedTraceLine(string uniqueId, string sourceFile, string userString, string userStringNoPrefix, CLogLineMatch m, CLogConfigurationFile c,
                             CLogTraceMacroDefination mac, CLogFileProcessor.CLogVariableBundle[] args)
 {
     SourceFile          = sourceFile;
     macro               = mac;
     UniqueId            = uniqueId;
     match               = m;
     configFile          = c;
     TraceString         = userString;
     splitArgs           = args;
     TraceStringNoPrefix = userStringNoPrefix;
 }
Пример #2
0
        private static SortedList <int, CLogLineMatch> UpdateMatches(string data, string sourceFileName, CLogTraceMacroDefination inspect)
        {
            string inspectToken = inspect.MacroName + "\\s*" + @"\((?<args>.*?)\);";
            Regex  r            = new Regex(inspectToken, RegexOptions.Singleline);
            SortedList <int, CLogLineMatch> matches = new SortedList <int, CLogLineMatch>();

            foreach (Match m in r.Matches(data))
            {
                CLogLineMatch lineMatch = new CLogLineMatch(sourceFileName, m);
                matches.Add(m.Groups["0"].Index, lineMatch);
            }

            return(matches);
        }
Пример #3
0
        private static int Main(string[] args)
        {
            ParserResult <CommandLineArguments> o = Parser.Default.ParseArguments <CommandLineArguments>(args);

            return(o.MapResult(
                       options =>
            {
                try
                {
                    //
                    // The CommandLineArguments library validates most input arguments for us,  there are few ones that are complicated
                    //    this secondary check looks for those and errors out if present
                    //
                    if (!options.IsValid())
                    {
                        CLogConsoleTrace.TraceLine(CLogConsoleTrace.TraceType.Err, "Invalid args");
                        return -1;
                    }

                    CLogConfigurationFile configFile = CLogConfigurationFile.FromFile(options.ConfigurationFile);
                    configFile.ProfileName = options.ConfigurationProfile;

                    CLogSidecar sidecar;
                    if (!Directory.Exists(Path.GetDirectoryName(options.SidecarFile)))
                    {
                        Directory.CreateDirectory(Path.GetDirectoryName(options.SidecarFile));
                    }

                    if (!File.Exists(options.SidecarFile))
                    {
                        sidecar = new CLogSidecar();
                    }
                    else
                    {
                        string json = File.ReadAllText(options.SidecarFile);
                        sidecar = CLogSidecar.FromJson(json);
                        if (null == sidecar)
                        {
                            sidecar = new CLogSidecar();
                        }
                    }
                    sidecar.SetConfigFile(configFile);


                    string outputCFile = Path.Combine(Path.GetDirectoryName(options.OutputFile),
                                                      options.ScopePrefix + "_" + Path.GetFileName(options.OutputFile)) + ".c";

                    configFile.ScopePrefix = options.ScopePrefix;
                    configFile.FilePath = Path.GetFullPath(options.ConfigurationFile);
                    configFile.OverwriteHashCollisions = options.OverwriteHashCollisions;

                    CLogTraceMacroDefination syslog = new CLogTraceMacroDefination();
                    syslog.EncodedArgNumber = 1;
                    syslog.MacroName = "syslog";
                    syslog.MacroConfiguration = new System.Collections.Generic.Dictionary <string, string>();
                    syslog.MacroConfiguration[options.ConfigurationProfile] = options.ConfigurationProfile;

                    configFile.SourceCodeMacros.Add(syslog);


                    CLogFileProcessor processor = new CLogFileProcessor(configFile);
                    SysLogToClog converter = new SysLogToClog();

                    string content = File.ReadAllText(options.InputFile);
                    string output = processor.ConvertFile(configFile, null, converter, content, options.InputFile, true);

                    if (!Directory.Exists(Path.GetDirectoryName(options.OutputFile)))
                    {
                        Directory.CreateDirectory(Path.GetDirectoryName(options.OutputFile));
                    }


                    File.WriteAllText(options.InputFile, output);
                }
                catch (CLogHandledException e)
                {
                    e.PrintDiagnostics();
                    return -2;
                }

                return 0;
            }, err =>
            {
                Console.WriteLine("Bad Args : " + err);
                return -1;
            }));
        }
Пример #4
0
        private static SortedList <int, CLogLineMatch> UpdateMatches(string data, string sourceFileName, CLogTraceMacroDefination inspect)
        {
            string inspectToken;


            if (!inspect.ClassFunctionEncoding)
            {
                inspectToken = inspect.MacroName + "\\s*" + @"\((?<args>.*?)\);";
            }
            else
            {
                inspectToken = inspect.MacroName + "\\.(?<methodname>[A-Za-z0-9_-]*)" + @"\((?<args>.*?)\);";
            }

            Regex r = new Regex(inspectToken, RegexOptions.Singleline);
            SortedList <int, CLogLineMatch> matches = new SortedList <int, CLogLineMatch>();

            foreach (Match m in r.Matches(data))
            {
                string uid           = "";
                string args          = "";
                string encodedString = "";

                List <string> splitArgs = new List <string>();
                if (inspect.NoEncodingOk)
                {
                    args = m.Groups["args"].ToString();

                    splitArgs = new List <string>(SplitWithEscapedQuotes(args, ','));

                    if (0 != args.Length && inspect.EncodedArgNumber >= splitArgs.Count)
                    {
                        throw new CLogHandledException("EncodedArgNumberTooLarge", CLogHandledException.ExceptionType.EncodedArgNumberInvalid, null);
                    }
                }
                else if (inspect.ClassFunctionEncoding)
                {
                    uid  = m.Groups["methodname"].ToString();
                    args = m.Groups["args"].ToString();

                    splitArgs = new List <string>(SplitWithEscapedQuotes(args, ','));

                    if (inspect.EncodedArgNumber >= splitArgs.Count)
                    {
                        throw new CLogHandledException("EncodedArgNumberTooLarge", CLogHandledException.ExceptionType.EncodedArgNumberInvalid, null);
                    }

                    encodedString = splitArgs[inspect.EncodedArgNumber];
                }
                else
                {
                    args = m.Groups["args"].ToString();

                    splitArgs = new List <string>(SplitWithEscapedQuotes(args, ','));
                    uid       = splitArgs[0].Trim();

                    if (inspect.EncodedArgNumber >= splitArgs.Count)
                    {
                        throw new CLogHandledException("EncodedArgNumberTooLarge", CLogHandledException.ExceptionType.EncodedArgNumberInvalid, null);
                    }

                    encodedString = splitArgs[inspect.EncodedArgNumber];
                }

                CLogLineMatch lineMatch = new CLogLineMatch(sourceFileName, m, uid, encodedString, args, splitArgs.ToArray());
                matches.Add(m.Groups["0"].Index, lineMatch);
            }

            return(matches);
        }