Search code examples
javascriptjquerypythondjangoconsole

tail -f in a webbrowser


I've created a Python script that monitors a logfile for changes (like tail -f) and displays it on a console. I would like to access the output of the Python script in a webbrowser. What would I need to create this? I was thinking about using Django and jQuery. Any tips or examples are greatly appreciated.


Solution

  • First create a python script that monitors the log file for changes. If you only need this for debugging - testing purposes, then it is an overkill to use Django or another web framework. It is very easy to implement Http Web server functionality using sockets. Whenever an Http GET request is coming, serve only the difference from the different request. In order to achieve this you need to store in memory the status of every request coming (e.g.number of last line in the file).

    The jQuery part is actually quite easy. Set up a timer with setTimeout function. Something like this will do:

    function doUpdate() {
      $.ajax({type: "GET", url : tailServiceUrl,
              success: function (data) {
                 if (data.length > 4)
                 {
                    // Data are assumed to be in HTML format
                    // Return something like <p/> in case of no updates
                    $("#logOutputDiv").append(data);
                 }
                 setTimeout("doUpdate()", 2000);
               }});
    }
    
    setTimeout("doUpdate()", 2000);
    

    You can also create callbacks for error and timeout to report a problem with the server.