public void Range() { var log = new[] { "2018-09-09 23:58:35,66023314,0", "2018-09-10 08:08:31,66023314,0", "2018-09-10 11:03:01,66024154,0" }; var processor = new LogProcessor(); Func <DateTime, DateTime, IEnumerable <string> > rangeProcessor = (from, to) => processor.Process(log, "戦果.csv", from, to, false); PAssert.That( () => rangeProcessor(DateTime.MinValue, DateTime.MaxValue).SequenceEqual(new[] { "[\"2018-09-09 23:58:35\",\"66023314\",\"0\"]", ",\n[\"2018-09-10 08:08:31\",\"66023314\",\"0\"]", ",\n[\"2018-09-10 11:03:01\",\"66024154\",\"0\"]" })); PAssert.That( () => rangeProcessor(DateTime.MinValue, new DateTime(2018, 9, 10)).SequenceEqual(new[] { "[\"2018-09-09 23:58:35\",\"66023314\",\"0\"]" } )); PAssert.That( () => rangeProcessor(new DateTime(2018, 9, 10), DateTime.MaxValue).SequenceEqual(new[] { "[\"2018-09-10 08:08:31\",\"66023314\",\"0\"]", ",\n[\"2018-09-10 11:03:01\",\"66024154\",\"0\"]" })); PAssert.That( () => rangeProcessor(new DateTime(2018, 9, 10), new DateTime(2018, 9, 10, 11, 0, 0)).SequenceEqual(new[] { "[\"2018-09-10 08:08:31\",\"66023314\",\"0\"]" })); }
private void ProcessFile() { try { //Give runtime 10 seconds to create .mlpd for (int i = 0; i < 100; i++) { if (File.Exists(Options.MlpdOutputPath)) { break; } Thread.Sleep(100); } using (var fs = new FileStream(Options.MlpdOutputPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) using (var logStream = new NeverEndingLogStream(fs, cts.Token)) { processor = new LogProcessor(logStream, null, visitor); processor.Process(cts.Token); } } catch (OperationCanceledException) { } catch (Exception ex) { Console.WriteLine(ex); } }
public void ProcessFile() { int retries = 0; retryOpeningLogfile: retries++; if (retries > 1) { if (retries == 4) { if (!File.Exists(fileToProcess)) { ReportUserError("File doesn't exist."); } else if (new FileInfo(fileToProcess).Length == 0) { ReportUserError("File is empty."); } else { ReportUserError("Failed to open/read file."); } } Thread.Sleep(500); } var header = ReadHeader(fileToProcess); if (header == null) { goto retryOpeningLogfile; } TcpPort = header.Port; var cancellationToken = cts.Token; try { using (fileStream = new FileStream(fileToProcess, FileMode.Open, FileAccess.Read, FileShare.Read)) { var processor = new LogProcessor(fileStream, new KrofilerLogEventVisitor(this)); processor.Process(cancellation, runner != null); } if (cancellation.IsCancellationRequested) { completionSource.SetCanceled(); } else { completionSource.SetResult(true); } } catch (Exception e) { if (cancellation.IsCancellationRequested) { completionSource.SetCanceled(); } else { completionSource.SetException(e); } } Finished?.Invoke(this); }
public void AddIfMatched(FilterLog log) { if (LogProcessor.IsLogForEvent(log)) { MatchedLogs.Add(log); } }
private static void MeasureTimes(string filename, EVTCParser parser, LogProcessor processor, GW2ApiData apiData, TextWriter outputWriter) { var stopwatch = Stopwatch.StartNew(); var log = parser.ParseLog(filename); var parsedTime = stopwatch.Elapsed; stopwatch.Restart(); var processedLog = processor.ProcessLog(log); var processedTime = stopwatch.Elapsed; stopwatch.Restart(); var analyzer = new LogAnalyzer(processedLog, apiData); var result = analyzer.GetResult(); var duration = analyzer.GetEncounterDuration(); var mode = analyzer.GetMode(); var statisticsTime = stopwatch.Elapsed; var totalTime = parsedTime + processedTime + statisticsTime; outputWriter.WriteLine( $"{filename},{parsedTime.TotalMilliseconds},{processedTime.TotalMilliseconds},{statisticsTime.TotalMilliseconds},{totalTime.TotalMilliseconds}"); outputWriter.Flush(); }
/// <summary> /// Logs the specified log entry. /// </summary> /// <param name="logEntry">The log entry to log.</param> /// <param name="callerMemberName">The method or property name of the caller.</param> /// <param name="callerFilePath">The path of the source file that contains the caller.</param> /// <param name="callerLineNumber">The line number in the source file at which this method is called.</param> public void Log( LogEntry logEntry, [CallerMemberName] string callerMemberName = null, [CallerFilePath] string callerFilePath = null, [CallerLineNumber] int callerLineNumber = 0) { if (logEntry == null) { throw new ArgumentNullException(nameof(logEntry)); } if (_isDisposed) { throw new ObjectDisposedException("Cannot log to a disposed Logger."); } if (LogProcessor.IsDisposed) { throw new ObjectDisposedException("Cannot log to a Logger with a disposed LogProcessor."); } if (!_canProcessLogs || logEntry.Level < Level) { return; } logEntry.CallerInfo = $"{callerFilePath}:{callerMemberName}({callerLineNumber})"; LogProcessor.ProcessLogEntry(this, logEntry); }
private void Dispose(bool disposing) { if (_isDisposed) { return; } lock (this) { if (_isDisposed) { return; } _isDisposed = true; if (disposing) { GC.SuppressFinalize(this); } if (_disposeLogProcessor) { LogProcessor.Dispose(); } var logProviders = LogProviders?.GetEnumerator(); while (logProviders != null && logProviders.MoveNext()) { (logProviders.Current as IDisposable)?.Dispose(); } } }
public Loader(ParameterConfiguration config) { List <FileInfo> filelist = new List <FileInfo>(); this.config = config; processor = new LogProcessor(filelist, config.skipDecisions, config.checkToConsider); }
public TagConfirmation[] UploadTags(String nickname, String password, TagUpdate tags) { if (String.IsNullOrEmpty(nickname)) { Log.Logger("UpdateTags: nickname is null or an empty string.", Identifier); throw new ArgumentNullException("nickname"); } if (String.IsNullOrEmpty(password)) { Log.Logger("UpdateTags: password is null or an empty string.", Identifier); throw new ArgumentNullException("password"); } if (tags == null) { Log.Logger("UpdateTags: tags is null.", Identifier); throw new ArgumentNullException("tags"); } Log.Logger(String.Format("UpdateTags: nickname = \"{0}\".", nickname), Identifier); Log.Logger(String.Format("UpdateTags: password = \"{0}\".", password), Identifier); Log.Logger(String.Format("UpdateTags: tags.DeviceTagID.Length = {0}.", tags.DeviceTagID.Length)); Log.Logger(String.Format("UpdateTags: tags.TagValidationString = {0}.", tags.TagValidationString.Length)); Log.Logger(String.Format("UpdateTags: tags.DeviceTagID = {0}.", LogProcessor.ArrayToString(tags.DeviceTagID)), Identifier); Log.Logger(String.Format("UpdateTags: tags.TagValidationString = {0}.", LogProcessor.ArrayToString(tags.TagValidationString)), Identifier); var member = Member.GetMemberViaNicknamePassword(nickname, password); var confirmationArray = new TagConfirmation[tags.CheckArraylength()]; for (var i = 0; i < tags.CheckArraylength(); i++) { var deviceTagID = tags.DeviceTagID[i]; // Device tag table needs to be added and this needs to be hooked up. var friendMember = Member.GetMemberAndDeviceByDeviceTagID(deviceTagID); var confirmedByServer = false; if (friendMember != null) { var friendTag = new FriendTag() { FirstMemberID = member.MemberID, SecondMemberID = friendMember.MemberID, TaggedDT = DateTime.Now, CreatedDT = DateTime.Now }; friendTag.SaveWithFriendRequest(); confirmedByServer = true; FriendRequest.CreateBluetoothFriendRequest(member.MemberID, friendMember.MemberID); } confirmationArray[i] = new TagConfirmation(deviceTagID, confirmedByServer); } return(confirmationArray); }
public void IsLogForEvent_WhenTheEventMatchesReturnsTrue() { EventLog <TestData.Contracts.StandardContract.TransferEvent>[] logsProcessed = null; var processor = new LogProcessor <TestData.Contracts.StandardContract.TransferEvent>((logs) => { logsProcessed = logs.ToArray(); return(Task.CompletedTask); }); var transferEvent = TestData.Contracts.StandardContract.SampleTransferLog(); var nonTransferLog = new FilterLog(); Assert.True(processor.IsLogForEvent(transferEvent)); Assert.False(processor.IsLogForEvent(nonTransferLog)); }
public void MaterialLogInNumberType() { var processor = new LogProcessor(); var log = "2018-09-10 20:36:34,294892,296784,259518,294588,2484,2975,2550,3"; var result = processor.Process(new[] { log }, "資材ログ.csv", DateTime.MinValue, DateTime.MaxValue, true) .ToArray(); PAssert.That(() => result.Length == 1, "現在値の出力なし"); PAssert.That(() => result[0] == "[1536579394000,294892,296784,259518,294588,2484,2975,2550,3]"); }
protected override Log GetLog() { if (processedLog == null) { var parser = new EVTCParser(); var processor = new LogProcessor(); var parsedLog = parser.ParseLog(filename); processedLog = processor.ProcessLog(parsedLog); } return(processedLog); }
public static void ExecuteStrategy() { var logFileReader = new Strategy.LogFileReader(); var fileLogProcessor = new LogProcessor(logFileReader.Read); fileLogProcessor.ProcessLogs(); fileLogProcessor.Logs.ForEach(Console.WriteLine); var windowsEventLogReader = new WindowsEventLogReader(); var windowsEventsLogProcessor = new LogProcessor(windowsEventLogReader.Read); windowsEventsLogProcessor.ProcessLogs(); windowsEventsLogProcessor.Logs.ForEach(Console.WriteLine); }
public RunDatabaseUpdateTask(string hostname, string databaseName, string updatePackageLocation, LogProcessor logProcessor, string useUnzipedFolderPath = null, string connectionString = null, string folderName = null) { if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + Path.DirectorySeparatorChar + "Logs")) { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + Path.DirectorySeparatorChar + "Logs"); } _logProcessor = logProcessor; _hostName = hostname; _databaseName = databaseName; _updatePackageLocation = updatePackageLocation; _useUnzipedFolderPath = useUnzipedFolderPath; _customConnectionString = connectionString; _databaseFolderName = folderName ?? databaseName; }
static void Main() { string filename = "example.zevtc"; var parser = new EVTCParser(); // Used to read a log file and get raw data out of it var processor = new LogProcessor(); // Used to process the raw data // The parsed log contains raw data from the EVTC file ParsedLog parsedLog = parser.ParseLog(filename); // The log after processing the raw data into structured events and agents. Log log = processor.ProcessLog(parsedLog); // At this point, we can do anything with the processed data, and use the LogAnalyzer // for easy access to most common results with caching. var analyzer = new LogAnalyzer(log); Encounter encounter = analyzer.GetEncounter(); // Encounter names are available for some languages, we use the target name if it's not. if (EncounterNames.TryGetEncounterNameForLanguage(GameLanguage.English, encounter, out string name)) { Console.WriteLine($"Encounter: {name}"); } else { Console.WriteLine($"Encounter: {log.MainTarget?.Name ?? "unknown target"}"); } Console.WriteLine($"Result: {analyzer.GetResult()}"); Console.WriteLine($"Mode: {analyzer.GetMode()}"); Console.WriteLine($"Duration: {analyzer.GetEncounterDuration()}"); // The processed log allows easy access to data about agents foreach (var player in log.Agents.OfType <Player>()) { Console.WriteLine($"{player.Name} - {player.AccountName} - {player.Profession} - {player.EliteSpecialization}"); } // Events may be accessed as well foreach (var deadEvent in log.Events.OfType <AgentDeadEvent>()) { if (deadEvent.Agent is Player player) { Console.WriteLine($"{player.Name} died at {deadEvent.Time}."); } } }
public void EnseiLog() { var processor = new LogProcessor(); var log = new[] { "2018-09-10 17:45:09,大成功,北方鼠輸送作戦,589,498,0,0,0,0,0", "2018-09-10 17:53:34,成功,長距離練習航海,0,117,34,0,0,1,0" }; var result = processor.Process(log, "遠征報告書.csv", DateTime.MinValue, DateTime.MaxValue, false); PAssert.That(() => result.SequenceEqual(new[] { "[\"2018-09-10 17:45:09\",\"大成功\",\"北方鼠輸送作戦\",\"589\",\"498\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"]", ",\n[\"2018-09-10 17:53:34\",\"成功\",\"長距離練習航海\",\"0\",\"117\",\"34\",\"0\",\"0\",\"1\",\"0\",\"0\"]" })); }
public static void ExtractMessagesFromFiles(IEnumerable <ACSLogFile> mLogsToProcess, string directory, List <Message> messages, UIFilterSettings settUIFilters, bool doCreateSeparateMessageLists, Action <string> uiSyncAction) { foreach (var logFile in mLogsToProcess) { settUIFilters.FilterRTSMMessages = (logFile.SourceType == SourceType.RTSM_in_thslog); var processorSettings = new LogProcessorSettings() { LogFile = logFile, UIFS = settUIFilters, CreateSeparateMessageLists = doCreateSeparateMessageLists }; var lp = new LogProcessor(); string resultPath = string.Empty; int prevMessagesCount = messages.Count; try { resultPath = lp.ProcessLogFile(directory, processorSettings, m => messages.Add(m)); var messagesProcessedCount = messages.Count - prevMessagesCount; var updateStatusText = string.Format("Processed file {0}.{2}{1}{2}", logFile.LogFileName, messagesProcessedCount == 0 ? string.Format("No {0} messages found.", logFile.SourceType) : string.Format("Parsed {0} {1} message(s).", messagesProcessedCount, logFile.SourceType), Environment.NewLine); if (processorSettings.CreateSeparateMessageLists) { updateStatusText += string.Format("Generated file:{0}{1}{0}", Environment.NewLine, resultPath); } updateStatusText += Environment.NewLine; uiSyncAction(updateStatusText); } catch (Exception ex) { throw new ApplicationException( string.Format("An error occured when processing file{0}{1}{2}{3}", logFile.LogFileName, Environment.NewLine, "Error:", ex) , ex); } System.GC.Collect(); GC.WaitForPendingFinalizers(); } }
static LogStreamHeader TryReadHeader(string mldpFilePath) { try { using (var s = File.OpenRead(mldpFilePath)) { var visitor = new HeadReaderLogEventVisitor(); var processor = new LogProcessor(s, visitor, null); try { processor.Process(visitor.TokenSource.Token); } catch { } return(processor.StreamHeader); } } catch { return(null); } }
public void BattleLogWithComma() { var processor = new LogProcessor(); var log = new[] { "2020-09-27 19:49:04,ペナン島沖,4,,S,同航戦,単縦陣,梯形陣,深海5,500t級軽巡洋艦,駆逐艦,神風," + "羽黒改二(Lv159),64/64,足柄改二(Lv159),60/63,神風改(Lv99),23/23,島風改(Lv158),41/41,Gotland andra(Lv136),53/53,,," + "軽巡ホ級(flagship),0/53,駆逐ロ級後期型,0/37,駆逐ロ級後期型,0/37,,,,,,,9,0,制空権確保,7-3", }; var result = processor.Process(log, "海戦・ドロップ報告書.csv", DateTime.MinValue, DateTime.MaxValue, false); PAssert.That(() => result.First() == "[\"2020-09-27 19:49:04\",\"ペナン島沖\",\"4\",\"\",\"S\",\"同航戦\",\"単縦陣\",\"梯形陣\",\"深海5,500t級軽巡洋艦\",\"駆逐艦\",\"神風\"," + "\"羽黒改二(Lv159)\",\"64/64\",\"足柄改二(Lv159)\",\"60/63\",\"神風改(Lv99)\",\"23/23\",\"島風改(Lv158)\",\"41/41\",\"Gotland andra(Lv136)\",\"53/53\",\"\",\"\"," + "\"軽巡ホ級(flagship)\",\"0/53\",\"駆逐ロ級後期型\",\"0/37\",\"駆逐ロ級後期型\",\"0/37\",\"\",\"\",\"\",\"\",\"\",\"\",\"9\",\"0\",\"確保\",\"\",\"\",\"7-3\"]"); }
public void BattleLog() { var processor = new LogProcessor(null, new Dictionary <string, string> { { "鎮守府正面海域", "1-1" } }); var log = new[] { "2018-09-08 11:28:01,鎮守府正面海域,3,ボス,A,同航戦,単縦陣,単縦陣,敵主力艦隊,駆逐艦,雷,浜波改(Lv78),32/32,涼風(Lv10),3/16,,,,,,,,,軽巡ホ級,0/33,駆逐イ級,0/20,駆逐イ級,7/20,,,,,,,0,0," }; var result = processor.Process(log, "海戦・ドロップ報告書.csv", DateTime.MinValue, DateTime.MaxValue, false); PAssert.That(() => result.First() == "[\"2018-09-08 11:28:01\",\"鎮守府正面海域\",\"3\",\"ボス\",\"A\",\"同航戦\",\"単縦陣\",\"単縦陣\",\"敵主力艦隊\",\"駆逐艦\",\"雷\"," + "\"浜波改(Lv78)\",\"32/32\",\"涼風(Lv10)\",\"3/16\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"," + "\"軽巡ホ級\",\"0/33\",\"駆逐イ級\",\"0/20\",\"駆逐イ級\",\"7/20\",\"\",\"\",\"\",\"\",\"\",\"\",\"0\",\"0\",\"\",\"涼風(Lv10)\",\"\",\"1-1\"]"); }
public void TruncatedLog() { var processor = new LogProcessor(); var logs = new[] { "2014-12-15 23:10:34,29734,29855,28016,41440,1407,1529,2151,13", "2014-12-15 23:13:29,29709,29819,28019,41440,1407,1529,21", "2014-12-15 23:16:06,29710,29819,28018,41440,1407,1529,2151,13" }; var result = processor.Process(logs, "資材ログ", DateTime.MinValue, DateTime.MaxValue, true); PAssert.That(() => result.SequenceEqual(new[] { "[1418652634000,29734,29855,28016,41440,1407,1529,2151,13]", ",\n[1418652966000,29710,29819,28018,41440,1407,1529,2151,13]" })); }
public void DateFormat() { var processor = new LogProcessor(); var body = ",大型艦建造,まるゆ,潜水艦,1500,1500,2000,1000,1,0,瑞鶴改二甲(163),120"; var expected = ",\"大型艦建造\",\"まるゆ\",\"潜水艦\",\"1500\",\"1500\",\"2000\",\"1000\",\"1\",\"0\",\"瑞鶴改二甲(163)\",\"120\"]"; Func <string, string> dateProcessor = date => processor.Process(new[] { date + body }, "建造報告書", DateTime.MinValue, DateTime.MaxValue, false) .First(); var era = "30-09-10 20:13:39"; PAssert.That(() => "[\"2018-09-10 20:13:39\"" + expected == dateProcessor(era), "和暦を西暦に直す"); var excel = "2018/9/10 20:13"; PAssert.That(() => "[\"2018-09-10 20:13:00\"" + expected == dateProcessor(excel), "Excelの形式から変換する"); }
protected void ProcessLine(string line, bool eof) { if (line != null) { try { var entries = LogProcessor.ProcessLine(line, eof); if (entries.Count > 0) { GroupBox.Publish(entries); } } catch (Exception ex) { Log.Write(ex); } } }
public async Task Process_InvokesCallback() { EventLog <TestData.Contracts.StandardContract.TransferEvent>[] logsProcessed = null; var processor = new LogProcessor <TestData.Contracts.StandardContract.TransferEvent>((logs) => { logsProcessed = logs.ToArray(); return(Task.CompletedTask); }); var logsToProcess = new[] { TestData.Contracts.StandardContract.SampleTransferLog(), TestData.Contracts.StandardContract.SampleTransferLog() }; await processor.ProcessLogsAsync(logsToProcess); Assert.Equal(logsToProcess.Length, logsProcessed.Length); foreach (var processedLog in logsProcessed) { Assert.IsType <EventLog <TestData.Contracts.StandardContract.TransferEvent> >(processedLog); } }
protected override Log GetLog() { byte[] bytes; using (var memoryStream = new MemoryStream()) { stream.CopyTo(memoryStream); bytes = memoryStream.ToArray(); } if (processedLog == null) { var parser = new EVTCParser(); var processor = new LogProcessor(); var parsedLog = parser.ParseLog(bytes); processedLog = processor.ProcessLog(parsedLog); } return(processedLog); }
public override string ToString() { string t; bool isBin = Term.Args.Length == 2; if (Negated && Term.Name == "or") { Negated = false; Term = new Term("And", LogProcessor.NegateAll(Term.Args)); } if (isBin) { if (Term.Name.Any(char.IsLetterOrDigit)) { isBin = false; } } if (Term == null) { t = "(nil)"; } else if (isBin) { var content0 = new InfoPanelContent(); var content1 = new InfoPanelContent(); Term.Args[0].PrettyPrint(content0, PrettyPrintFormat.DefaultPrettyPrintFormat()); Term.Args[1].PrettyPrint(content1, PrettyPrintFormat.DefaultPrettyPrintFormat()); content0.finalize(); content1.finalize(); t = $"{content0} {Term.Name} {content1}"; } else { var content = new InfoPanelContent(); Term.PrettyPrint(content, PrettyPrintFormat.DefaultPrettyPrintFormat()); content.finalize(); t = content.ToString(); } return(string.Format("{0}p{1} {3}{2}", Negated ? "~" : "", Id, t, Implied == null ? "" : "[+" + Implied.Length + "] ")); }
private static void ProcessLog() { const string path = @"C:\Code\Test.log"; var processor = new LogProcessor(path); try { foreach (var result in processor.CountTask.Result.OrderByDescending(x => x.Value)) { Console.WriteLine(result); } } catch (Exception x) { Console.WriteLine(x); } Console.ReadLine(); }
public void MaterialLogWithCurrentRecord() { var processor = new LogProcessor(new[] { new MaterialCount { Now = 2001 }, new MaterialCount { Now = 2002 }, new MaterialCount { Now = 2003 }, new MaterialCount { Now = 2004 }, new MaterialCount { Now = 201 }, new MaterialCount { Now = 202 }, new MaterialCount { Now = 203 }, new MaterialCount { Now = 100 } }); var now = new DateTime(2018, 1, 1); var log = "2018-09-10 20:36:34,294892,296784,259518,294588,2484,2975,2550,3"; var result = processor.Process(new[] { log }, "資材ログ.csv", DateTime.MinValue, DateTime.MaxValue, false, now) .ToArray(); PAssert.That(() => result[0] == "[\"2018-09-10 20:36:34\",\"294892\",\"296784\",\"259518\",\"294588\",\"2484\",\"2975\",\"2550\",\"3\"]"); var date = Logger.FormatDateTime(now); PAssert.That(() => result[1] == $",\n[\"{date}\",\"2001\",\"2002\",\"2003\",\"2004\",\"201\",\"202\",\"203\",\"100\"]", "現在値"); }
private static void MeasureTimes(string filename, EVTCParser parser, LogProcessor processor, LogAnalyser analyser, GW2ApiData apiData, TextWriter outputWriter) { var stopwatch = Stopwatch.StartNew(); var log = parser.ParseLog(filename); var parsedTime = stopwatch.Elapsed; stopwatch.Restart(); var processedLog = processor.GetProcessedLog(log); var processedTime = stopwatch.Elapsed; stopwatch.Restart(); var statistics = analyser.GetStatistics(processedLog, apiData); var statisticsTime = stopwatch.Elapsed; var totalTime = parsedTime + processedTime + statisticsTime; outputWriter.WriteLine( $"{filename},{parsedTime.TotalMilliseconds},{processedTime.TotalMilliseconds},{statisticsTime.TotalMilliseconds},{totalTime.TotalMilliseconds}"); outputWriter.Flush(); }
public LogAnalytics(EVTCParser parser, LogProcessor processor, Func <Log, LogAnalyzer> analyzerFactory) { Parser = parser ?? throw new ArgumentNullException(nameof(parser)); Processor = processor ?? throw new ArgumentNullException(nameof(processor)); AnalyzerFactory = analyzerFactory ?? throw new ArgumentNullException(nameof(analyzerFactory)); }