public TailFileListener(TimberWinR.Parser.TailFileArguments arguments, CancellationToken cancelToken) : base(cancelToken, "Win32-TailLog") { Stop = false; EnsureRollingCaught(); _codecArguments = arguments.CodecArguments; if (_codecArguments != null && _codecArguments.Type == CodecArguments.CodecType.multiline) { _codec = new Multiline(_codecArguments); } if (!string.IsNullOrEmpty(arguments.Type)) { SetTypeName(arguments.Type); } _receivedMessages = 0; _arguments = arguments; _pollingIntervalInSeconds = arguments.Interval; foreach (string srcFile in _arguments.Location.Split(',')) { string file = srcFile.Trim(); Task.Factory.StartNew(() => TailFileWatcher(file)); } }
public TailFileListener(TimberWinR.Parser.TailFileArguments arguments, CancellationToken cancelToken) : base(cancelToken, "Win32-TailLog") { Stop = false; EnsureRollingCaught(); _codecArguments = arguments.CodecArguments; if (_codecArguments != null && _codecArguments.Type == CodecArguments.CodecType.multiline) _codec = new Multiline(_codecArguments); if (!string.IsNullOrEmpty(arguments.Type)) SetTypeName(arguments.Type); _receivedMessages = 0; _arguments = arguments; _pollingIntervalInSeconds = arguments.Interval; foreach (string srcFile in _arguments.Location.Split(',')) { string file = srcFile.Trim(); Task.Factory.StartNew(() => TailFileWatcher(file)); } }
public void TestTailFile() { List<JObject> events = new List<JObject>(); if (File.Exists(".timberwinrdb")) File.Delete(".timberwinrdb"); var mgr = new Manager(); mgr.LogfileDir = "."; var tf = new TailFileArguments(); var cancelTokenSource = new CancellationTokenSource(); tf.Location = "TestTailFile1.log"; if (File.Exists(tf.Location)) File.Delete(tf.Location); try { var listener = new TailFileListener(tf, cancelTokenSource.Token); listener.OnMessageRecieved += o => { events.Add(o); if (events.Count >= 100) cancelTokenSource.Cancel(); }; GenerateLogFile(tf.Location); bool createdFile = false; while (!listener.Stop && !cancelTokenSource.IsCancellationRequested) { Thread.Sleep(100); if (!createdFile) { GenerateLogFile(tf.Location); createdFile = true; } } } catch (OperationCanceledException) { Console.WriteLine("Done!"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } finally { Assert.AreEqual(100, events.Count); } }