Tengo una aplicación de matraz de Python ejecutándose en EC2. Para permitir que la interfaz de la interfaz de usuario sea funcional, ejecuto esto en ec2 después de iniciar sesión como el usuario correcto:
uwsgi --socket 0.0.0.0:8000 --protocol=http -w wsgi:application -z 120 --http-timeout 120 --enable-threads -H /home/test/env --daemonize /home/test/test.logy la interfaz de usuario se vuelve operativa. Cuando hago clic en el botón de descarga, se realizan ciertos cálculos antes de que el csv esté listo para descargar. No tengo un archivo uwsgi.ini ni ningún tipo de nginx.
Después de un punto, test.log se convierte en un archivo muy grande; ¿Cómo escribo archivos de registro para que el registro de cada día se escriba en un archivo separado? o ¿cuál es la mejor manera de evitar que se genere un archivo de registro grande y, en cambio, tener algo que sea más manejable?
Puede implementar la rotación de registros utilizando los controladores de registro de Python:
from flask import Flask import logging from logging.handlers import RotatingFileHandler app = Flask(__name__) if __name__ == '__main__': handler = RotatingFileHandler('test.log', maxBytes=12000, backupCount=5) handler.setLevel(logging.INFO) app.logger.addHandler(handler) app.run()https://docs.python.org/3/library/logging.handlers.html#rotatingfilehandler
Esto transferiría los registros cuando se haya alcanzado el tamaño maxBytes . El archivo de registro principal seguirá siendo test.log pero el registro completo se renombrará a test.log.1 , test.log.2 y así sucesivamente.
Utiliza la clase TimedRotatingFileHandler .
El objeto TimedRotatingFileHandler creará un archivo de registro para cada día, pero deberá manejarlo dentro del código de la aplicación del servidor.
import os import logging from logging.handlers import TimedRotatingFileHandler from datetime import datetime logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) formatter = logging.Formatter('[%(asctime)s] %(levelname)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S') handler = TimedRotatingFileHandler(os.path.join('./', 'custom_log.log'), when='midnight', backupCount=7) handler.setLevel(logging.INFO) handler.setFormatter(formatter) logger.addHandler(handler) logger.info("Info") logger.warning("Warning") logger.error("Error")