2011-11-05 34 views
6

Tôi có một máy chủ chạy nginx + UWSGI + python. UWSGI đang chạy như một daemon với bộ cờ: --daemonize /var/log/uwsgi.log ghi nhật ký tất cả các lỗi ứng dụng.Cách viết để đăng nhập trăn bằng nginx + uwsgi

Tôi đã nhận thấy rằng do lỗi nếu tôi sử dụng câu lệnh in python, nó sẽ ghi vào nhật ký nhưng chỉ trên một lỗi. Thư viện đăng nhập python chuẩn dường như không ảnh hưởng đến nhật ký trong mọi tình huống.

Làm cách nào để chỉ các thư viện ghi nhật ký python sử dụng nhật ký UWSGI?

Trả lời

4

sử dụng logging.StreamHandler như khai thác gỗ handler

+3

Mặc dù câu trả lời của bạn không được chi tiết, nó đã dẫn tôi xuống con đường bên phải. Câu trả lời này mô tả phương pháp tôi đã sử dụng: http://stackoverflow.com/questions/1383254/logging-streamhandler-and-standard-streams – elkelk

+0

@elkelk: Bạn có thể mở rộng không? Tôi không cần các bộ lọc và cố gắng để đăng nhập với phương pháp này - nó vẫn không in bất cứ điều gì vào tập tin. –

+0

Tôi có vấn đề tương tự nhưng liên quan đến vùng chứa Docker. Hãy xem http://stackoverflow.com/questions/35511839/how-to-force-applications-stdout-logs-through-uwsgi – msgre

2

uWSGI là một máy chủ wsgi, và như vậy qua một dòng suối trong environ dict truyền cho các ứng dụng có thể được gọi nó host, sử dụng phím wsgi.errors. Nếu bạn đang viết một ứng dụng wsgi trần, sau đó viết vào luồng đó sẽ thực hiện công việc. Nếu bạn đang sử dụng một khung làm trừu tượng giao diện wsgi (và bằng âm thanh của nó, bạn là, print sẽ thường ghi vào sys.stdout, được đóng lại trong một quá trình được daemon hóa và sẽ không bao giờ chuyển sang bất kỳ tệp nhật ký nào), bạn sẽ có lẽ cần phải xem xét cách mà khung công tác đó xử lý việc ghi nhật ký lỗi.

Các vấn đề liên quan