Click here to Skip to main content
15,880,651 members
Articles / Desktop Programming / MFC
Article

Tail for Win32 - A Windows version of the Unix 'tail -f'

Rate me:
Please Sign up or sign in to vote.
4.75/5 (28 votes)
26 Nov 20033 min read 260K   3.7K   78   42
I had searched for what seemed like an eternity for a Windows version of the 'tail -f' command - a way to monitor logfiles as they change in realitime. Having not found one, I decided to write my own. Tail for Win32 is the result of hundreds of evenings' work to achieve just that.

Image 1

Introduction

Ever wanted to just type 'tail -f error_log' on Windows?

Envious of your Unix friends who can track changes to a file, in real time, as they happen?

Well, now with the Objektiv Tail for Win32, you'll be happily monitoring your log files like you've never done before.

What's even better, you can track several files all at the same time with the patented "Multiple Document Interface"TM technology, with each file having its own, fabulous window.

What is it?

Tail for Win32 is a Windows version of the Unix 'tail' utility. It can be used to monitor changes to a text file in real time - ideal for watching error logs.

The program was written in C++ using MFC, and uses Win32 file change notifications to monitor when a file changes.

The application uses a 'plug-in' architecture, under which all changes are passed through external DLLs that can perform various functionality.

The first plug-in is an SMTP filter. This DLL sends emails via SMTP when a keyword is found in the file being monitored.

And?...

As well as monitoring files in real time, you can also specify a set of 'keywords' that tail looks out for. When a keyword is encountered, it can be 'syntax' highlighted in a number of optional colors, and can also fire external plug-ins. This is all configurable on the fly.

The program can also be told to ignore any lines that do not contain the keywords specified; only showing 'hot' lines.

So How Does it Work?

At the core of the application is the Win32 file notification API. This API fires an event whenever a file changes in a directory. Using this event, we can track whenever changes are made to a particular file.

For each file that is monitored, a thread is set up that blocks on the firing of the file notification. This makes the application extremely efficient - it only ever does anything when a file actually changes.

This is all written in MFC under Visual Studio 6. But compiles quite happily under .NET and .NET 2003.

The following controls are used to a greater or lesser degree:

  • RichText control -version 2.0 to allow background shading
  • ListView control - with checkboxes and combo controls
  • Tree control - subclassed to handle double-clicks and right-clicks

Can I Help?

Yes, please!

The project is hosted on SourceForge, so CVS access is all part of the deal. If you think you'd like to help and can contribute even a few minutes of your time, please do get in touch!

The project homepage is: here and the CVS repository is updated at least daily, so please do check back on a regular basis.

License

Tail is released under the GPL. In a nutshell, you can do whatever you like with the source, so long as if you pass on the application for free or for profit, you must also pass on the source.

Updates

  • 4.2.7: Tally window fix. Added background and highlight colour dialogs. Slight re-jig of the object model.
  • 4.2.6: Fixed a couple of bugs with the Tally window and the Keyword configuration window.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
GeneralRe: Monitoring event log Pin
Paul Perkins27-Nov-03 11:04
Paul Perkins27-Nov-03 11:04 
GeneralRe: Monitoring event log Pin
ehaerim18-Jun-09 8:58
ehaerim18-Jun-09 8:58 
Generalautomatic scroll Pin
Rob Hegt18-Nov-03 22:12
Rob Hegt18-Nov-03 22:12 
GeneralRe: automatic scroll Pin
Anonymous18-Nov-03 22:19
Anonymous18-Nov-03 22:19 
QuestionPlugin Architecture - More Notes ? Pin
Garth J Lancaster14-Nov-03 14:09
professionalGarth J Lancaster14-Nov-03 14:09 
AnswerRe: Plugin Architecture - More Notes ? Pin
Paul Perkins14-Nov-03 21:11
Paul Perkins14-Nov-03 21:11 
GeneralRe: Plugin Architecture - More Notes ? Pin
Garth J Lancaster16-Nov-03 10:10
professionalGarth J Lancaster16-Nov-03 10:10 
QuestionFor how long? Pin
Tom Hunter14-Nov-03 12:19
Tom Hunter14-Nov-03 12:19 
AnswerRe: For how long? Pin
Paul Perkins14-Nov-03 20:55
Paul Perkins14-Nov-03 20:55 
GeneralRe: For how long? Pin
Lars [Large] Werner15-Nov-03 6:37
professionalLars [Large] Werner15-Nov-03 6:37 
QuestionWhy not just install unix utils for win32? Pin
ector14-Nov-03 12:16
ector14-Nov-03 12:16 
AnswerRe: Why not just install unix utils for win32? Pin
Jörgen Sigvardsson14-Nov-03 15:22
Jörgen Sigvardsson14-Nov-03 15:22 
GeneralRe: Why not just install unix utils for win32? Pin
Paul Perkins14-Nov-03 20:58
Paul Perkins14-Nov-03 20:58 
GeneralRe: Why not just install unix utils for win32? Pin
Jörgen Sigvardsson15-Nov-03 0:53
Jörgen Sigvardsson15-Nov-03 0:53 
GeneralRe: Why not just install unix utils for win32? Pin
Paul Perkins15-Nov-03 21:38
Paul Perkins15-Nov-03 21:38 
GeneralRe: Why not just install unix utils for win32? Pin
Anonymous22-Nov-04 12:58
Anonymous22-Nov-04 12:58 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.