Log seledri ke Papertrail

Saya sedang membangun aplikasi dengan Flask dan Celery dan saya mencoba mengirim log aplikasi saya ke Papertrail. Ini berfungsi dengan baik untuk log aplikasi reguler saya (sinkron). Konfigurasinya terlihat seperti ini:

    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)

Saya telah mencoba menambahkan logger ini ke tugas Seledri tetapi yang saya lihat hanyalah keluaran di sdout dan tidak ada apa pun di Papertrail. Apakah Celery melakukan sesuatu untuk mengatasi alur logging normal?

Saya menyadari Celery memiliki logger khusus tugas tetapi saya tidak dapat menemukan dokumentasi apa pun tentang bagaimana hal ini dapat dikonfigurasi dengan Celery.


person Darwin Tech    schedule 26.10.2015    source sumber


Jawaban (1)


Jika saya membaca ini dengan benar, rahasianya adalah panggil fungsi redirect_stdouts_to_logger untuk mengirim stdout ke instance SysLogHandler Anda. Seledri dokumen punya lebih banyak lagi.

person Troy Davis    schedule 15.11.2015