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; }
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); }
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; })); }
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); }