Saltar al contenido

Python / Django: inicie sesión en la consola en runserver, inicie sesión en un archivo en Apache

Solución:

Aquí hay una solución basada en registros de Django. Utiliza la configuración DEBUG en lugar de verificar si está ejecutando el servidor de desarrollo o no, pero si encuentra una mejor manera de verificarlo, debería ser fácil de adaptar.

LOGGING = {
    'version': 1,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/path/to/your/file.log',
            'formatter': 'simple'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

if DEBUG:
    # make all loggers use the console.
    for logger in LOGGING['loggers']:
        LOGGING['loggers'][logger]['handlers'] = ['console']

consulte https://docs.djangoproject.com/en/dev/topics/logging/ para obtener más detalles.

El texto impreso en stderr aparecerá en el registro de errores de httpd cuando se ejecute bajo mod_wsgi. Puedes usar print directamente, o usar logging en lugar de.

print >>sys.stderr, 'Goodbye, cruel world!'

Puede configurar el inicio de sesión en su settings.py expediente.

Un ejemplo:

if DEBUG:
    # will output to your console
    logging.basicConfig(
        level = logging.DEBUG,
        format="%(asctime)s %(levelname)s %(message)s",
    )
else:
    # will output to logging file
    logging.basicConfig(
        level = logging.DEBUG,
        format="%(asctime)s %(levelname)s %(message)s",
        filename="/my_log_file.log",
        filemode="a"
    )

Sin embargo, eso depende de la configuración de DEBUG, y tal vez no quieras tener que preocuparte por cómo está configurado. Vea esta respuesta sobre ¿Cómo puedo saber si mi aplicación Django se está ejecutando en el servidor de desarrollo o no? para una mejor forma de escribir ese condicional. Editar: el ejemplo anterior es de un proyecto de Django 1.1, la configuración de registro en Django ha cambiado algo desde esa versión.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *