Как прочитать отладочную информацию из журналов IIS - PullRequest
0 голосов
/ 05 марта 2009

Я поддерживаю старое приложение asp classic. Он использует Response.AppendToLog в качестве единственной системы ведения журнала отладки. Я отлаживаю его только на локальном хосте, поэтому файлы журналов находятся на моем жестком диске в папке% SystemDrive% \ inetpub \ logs \ LogFiles.

Я ищу похожую на хвост программу, которая показывает эти отладочные сообщения вживую. Возможно с возможностью раскрасить сообщения на основе фильтра.

Обновление: Я начал писать собственную хвостовую программу на python, используя информацию в Рецепт 157035 . Лесозаготовка примерно на минуту отстает. Есть идеи по улучшению?

Ответы [ 2 ]

0 голосов
/ 05 марта 2009

Я закончил это. Теперь все, что мне нужно сделать, это Response.AppendToLog("#message");, где каждый пробел или странный символ в сообщении заменяется подчеркиванием. Жаль, что он отстает на минуту или около того, но лучше, чем ничего.

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 голосов
/ 05 марта 2009

Зачем изобретать велосипед? Вы можете использовать Snare для IIS (бесплатно) для регистрации информации в Kiwi's Syslog Daemon (не бесплатно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...