2009-03-05 2 views
0

Ich behalte eine alte Asp-klassische Anwendung. Es verwendet Response.AppendToLog als einziges Debug-Protokollierungssystem. Ich debugge es nur auf meinem localhost, so dass die Protokolldateien auf meiner Festplatte im Ordner% SystemDrive% \ inetpub \ logs \ LogFiles sind.Wie Debug-Informationen aus IIS-Logs lesen

Ich bin auf der Suche nach einem Schwanz-ähnliche Programm, das diese Debug-Nachrichten live zeigt. Vielleicht mit einer Möglichkeit, die Nachrichten basierend auf einem Filter zu färben.

Update: Ich habe angefangen, meine eigenen Schwanz-Programm in Python mit der Info in Recipe 157035 zu schreiben. Das Logging liegt ungefähr eine Minute zurück. Irgendwelche Ideen, um es zu verbessern?

Antwort

0

Ich beendete es. Alles, was ich jetzt tun muss, ist Response.AppendToLog("#message");, wobei jedes Leerzeichen oder seltsame Zeichen in der Nachricht durch einen Unterstrich ersetzt wird. Schade, dass es um eine Minute oder so zurückbleibt, aber es ist besser als nichts.

import time, os, re 

def tail_f(file): 
    interval = 1.0 

    while True: 
     where = file.tell() 
     line = file.readline() 
     if not line: 
      time.sleep(interval) 
      file.seek(where) 
     else: 
      yield line 

def run(): 
    #Set the filename and open the file 
    filename = r"C:\inetpub\logs\LogFiles\W3SVC1\u_ex{0}.log".format(time.strftime("%y%m%d")) 
    file = open(filename,'r') 

    #Find the size of the file and move to the end 
    st_results = os.stat(filename) 
    st_size = st_results[6] 
    file.seek(st_size) 

    for line in tail_f(file): 
     #ignore comments 
     if line[0] != "#": 
      line = line.strip() 
      parts = line.split(" ") 

      status = parts[10] 
      if status == "304": 
       continue 

      when = parts[1] 
      method = parts[3] 
      path = parts[4] 
      query = parts[5].split("|")[0].split("#")[0] 

      if query == "-": 
       query = "" 
      elif query != "": 
       query = "?"+query 

      print when, method[0], status, path + query 

      if status == "500": 
       if parts[5].find("|") != -1: 
        errorparts = parts[5].replace("_", " ").split("|")[1:] 
        linenr = errorparts[0] 
        errornr = errorparts[1] 
        errormessage = errorparts[2] 
        print "Error {0} on line {1}\n{2}".format(errornr, linenr, errormessage) 
      if parts[5].find("#") != -1: 
       print "* "+("\n* ".join(parts[5].replace("_", " ").split("#")[1:])) 

run() 
0

Warum das Rad neu erfinden? Sie könnten Snare for IIS (kostenlos) verwenden, um die Informationen zu (nicht frei) zu protokollieren.

+0

Ich habe versucht sowohl Snare und Epilog, aber keiner scheint so einfach zu bedienen, wie ich möchte. Ich kann sie nicht dazu bringen, mir meine Protokolle zu zeigen. –