Thu thập log của Flask với Logentries

logentries.com là 1 dịch vụ phân tích, trích xuất thông tin từ log của các ứng dụng. Các log được thu thập và gửi đến server của logentries và được xử lý tại đó. Các log này có thể được thu gom ngay từ chương trình đang chạy của chúng ta mà không phải sinh ra file rồi thu thập file đó. Để làm được việc này, logentries cung cấp 1 số thư viện của những ngôn ngữ hay dùng, để ta có thể tích hợp vào ứng dụng của mình.

Trang web của tôi cũng đang thí nghiệm với dịch vụ này, mặc dù nhu cầu sử dụng cũng chỉ đơn giản là muốn có 1 nơi lưu trữ log, để debug ứng dụng web, chứ không cần phân tích gì. Sau đây là cách tôi sử dụng với Flask, framework được dùng để xây dựng nên website.

Theo cách tổ chức của tôi thì tôi sẽ có 1 file config.py chứa các thông tin cấu hình. Vì source code của website được public nên những thông tin cần bảo mật (key, password...) được lưu trong file secret.py không public và được import vào config.py. Sau khi đăng ký account trên logentries.com và tạo 1 thư mục trên đó, tôi copy lấy token của thư mục đó và gán cho hằng LOGENTRIES_TOKEN trong config (config.pysecret.py ở trên).

logentries chỉ nhằm dùng khi chạy ở production mode (chứ ở development mode thì log luôn ra Terminal cho tiện làm việc) nên tôi sẽ cấu hình để sử dụng logentries trong file wsgi.py, là file mà tôi dùng để chạy website ở production. Đây là nội dung của file:

import logging
from logentries import LogentriesHandler
from cherrypy import wsgiserver

from quanweb import app
from quanweb.config import LOGENTRIES_TOKEN

ADDRESS = '127.0.0.1'
PORT = 2750

handler = LogentriesHandler(LOGENTRIES_TOKEN)
app.logger.addHandler(handler)
logging.getLogger('sqlalchemy').addHandler(handler)

d = wsgiserver.WSGIPathInfoDispatcher({'/': app})
server = wsgiserver.CherryPyWSGIServer((ADDRESS, PORT), d)

if __name__ == '__main__':
    try:
        server.start()
    except KeyboardInterrupt:
        server.stop()

Ghi chú: Cần cài gói logentries, là thư viện thu thập và upload log dành cho Python. Có thể cài qua pip như sau:

sudo pip install logentries
Website này sử dụng Disqus cho comment. Nếu bạn không thấy các comment dưới đây, có lẽ Disqus đang bị chặn. Bạn cần đổi DNS.
comments powered by Disqus