Esempio n. 1
0
        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));
            }
        }
Esempio n. 3
0
        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);
            }
        }