¿Cómo puedo recuperar el registro de salida estándar de web.py cuando se ejecuta en Apache/mod_wsgi?

Desarrollé una aplicación web.py y la probé mucho en modo independiente (ejecutando myapp.py desde la línea de comando) y su salida estándar fue muy útil para la depuración. Ahora lo estoy ejecutando bajo Apache/mod_wsgi y muchas cosas no funcionan. Por ejemplo, mi esquema de autenticación básico, que solía funcionar, siempre rechaza el nombre de usuario/contraseñas que se le dan. Lo primero que necesito es poder ver los mensajes de depuración que solía tener. Pero la salida del script no se encuentra por ninguna parte.

¿Cómo puedo volver a tener "impresiones de depuración"?

No quiero preguntar sobre problemas específicos en mi aplicación hasta que haya resuelto todo eso.

preguntado el 03 de mayo de 12 a las 20:05

¿Qué versión de mod_wsgi estás usando? Asegúrese de estar usando mod_wsgi 3.0+ y la salida 'imprimir' debería terminar en el registro de errores de Apache. -

1 Respuestas

>>> class STDOUT(object):
    def __init__(self, next):
        self.next = next
        self.file = open('stdout.txt', 'w')
    def write(self, thing):
        self.file.write(thing)
        l.append(thing)
        self.next.write(thing)

>>> import sys
>>> s = STDOUT(sys.stdout)
>>> sys.stdout = s
>>> l = []
>>> print 4
4
>>> l
['4', '\n']

contestado el 03 de mayo de 12 a las 20:05

No funciona dentro de web.py. Utilicé una versión condensada de su código que no escribe en la salida estándar "anterior" y no se agrega a una matriz interna. No entra nada en el archivo. - JCCyC

No puedo entender por qué esto no debería funcionar... Funcionó todos los años para mí. ¿Tal vez ocurre algún ImportError? ¿Has puesto un try:except: alrededor de todo el módulo y has escrito en un archivo en alguna parte? Puede usar traceback.print_exc(file= ...) para imprimir un error. - Usuario

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.