ฉันกำลังสร้างแอปพลิเคชันด้วย 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