คื่นฉ่ายบันทึกไปที่ Papertrail

ฉันกำลังสร้างแอปพลิเคชันด้วย Flask และ Celery และฉันกำลังพยายามส่งบันทึกแอปพลิเคชันของฉันไปที่ Papertrail วิธีนี้ใช้ได้ผลดีกับบันทึกแอปพลิเคชันปกติ (ซิงโครนัส) ของฉัน การกำหนดค่ามีลักษณะดังนี้:

    import logging
    from logging.handlers import SysLogHandler
    import socket


    class ContextFilter(logging.Filter):
        hostname = socket.gethostname()

        def filter(self, record):
            record.hostname = ContextFilter.hostname
            return True


    f = ContextFilter()
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    logger.addFilter(f)

    formatter = logging.Formatter(
        "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    )
    syslog = SysLogHandler(address=('<myapp>.papertrailapp.com', <port>))
    syslog.setFormatter(formatter)
    logger.addHandler(syslog)

ฉันได้ลองเพิ่มคนตัดไม้นี้ในงาน Celery แล้ว แต่ทั้งหมดที่ฉันเห็นคือส่งออกเป็น sdout และไม่มีอะไรใน Papertrail คื่นฉ่ายทำอะไรบางอย่างเพื่อหลีกเลี่ยงขั้นตอนการบันทึกปกติหรือไม่?

ฉันรู้ว่า Celery มีตัวบันทึกเฉพาะงาน แต่ฉันไม่พบเอกสารใด ๆ เกี่ยวกับวิธีการกำหนดค่าด้วย Celery


person Darwin Tech    schedule 26.10.2015    source แหล่งที่มา


คำตอบ (1)


ถ้าฉันอ่านสิ่งนี้ อย่างถูกต้อง เคล็ดลับก็คือ เรียกใช้ฟังก์ชัน redirect_stdouts_to_logger เพื่อส่ง stdout ไปยังอินสแตนซ์ SysLogHandler ของคุณ ของคื่นฉ่าย เอกสารมีมากกว่านี้

person Troy Davis    schedule 15.11.2015