RolandPheasant / TailBlazer

A modern file tail utility based on Rx.Net which show cases reactive programming and Dynamic Data (see https://github.com/RolandPheasant/DynamicData)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Plug-in to any provider of lines

RolandPheasant opened this issue · comments

There have been some very interesting requests for enabling Tail Blazer to be the visualisation of external data sources. So far there have been requests for:
#47 Tx Support
#44 Open pipe instead of file
#20 SSH/SFTP Support for Tailing Remote Files

Also but not raised, plug-ins for the following has been asked for:

  • Local instance of Elastic Search
  • Windows event viewer logs
  • TCP and UDP (Log4net, NLog, log4j enable this)

To account for these requests I have completed some major re-architecting and provided some very simple plug-in interfaces which if implemented can be used as a source of lines.

The plug in observable is:

    IObservable<ILineProvider>

And ILineProvider is:

    public interface ILineProvider
    {
        bool IsEmpty { get; }
        int Count { get; }
        IEnumerable<Line> ReadLines(ScrollRequest scroll);
    }

With a little tweaking of my code I will be able to drop IsEmpty and Count as these can be derived from the results.

If the connectivity to each of these can be driven from within Tail Blazer then I see no reason why I couldn't allow external plug-ins for any of these providers + more

Has anyone got any more ideas, or would anyone like to help?

Additional providers could be TCP and UDP. Log4net, NLog, log4j are all able to send log messages over the wire (or through the ether). It would be awesome if TailBlazer could act as a sink for those messages.

@thoemmi I have updated the list in the original comment

Many of our logs get pushed to Append Blobs in Azure Storage. It would be ideal having "appendages" updated straight to Tail Blazer.

I use powershell to tail logs across many servers with a command like this:
icm -comp $servers -cred $me -script { gc some.log -last 1 -wait }

It would be great to pipe this to TailBlazer - ideally it would create tabs for each distinct $_.PSComputerName

@gfody great suggestion

Thank you, TailBlazer is great tool!

So I've created EtwStream https://github.com/neuecc/EtwStream as logging Event Tracing for Windows.
It is similar to Tx but it features more in Realtime.

If supports plug-in, I'll add EtwStram for TailBlazer.

By the way, ETW has structured log events.
Currently I'm using LINQPad for dump ETW structured events.
If TailBlazer supports keeping structure, more good.
If do it, interface will be changed, IEnumerable<Column[]> ?

@neuecc etw looks excellent and I see no reason it could not be plugged in.

I will take a more detailed look and get back to you.

This would be a very useful feature for streaming logs from cloudfoundry as well. 👍

I'm not sure if this is the appropriate place for this, but I'd like to vote for #20. Currently, I have to mount a remote file system via Dokan SSHFS, and then tail files through that mount, so a more direct path would be appreciated.

+1 for #20
How can I help make this happen?

@Roritharr are you willing to contribute? I would love some help. If you can contact me here https://github.com/RolandPheasant/TailBlazer

commented

Any progress on #20?