2010-08-16 60 views
8

Tôi có 3 quy trình chạy dưới lò phản ứng xoắn của tôi: Orbited, WSGI (chạy django) và Twisted.Ghi nhật ký xoắn

Tôi hiện đang sử dụng

log.startLogging(sys.stdout) 

Khi tất cả các bản ghi đang hướng đến cùng một nơi, có quá nhiều lũ lụt.

Một dòng đăng nhập của tôi từ WSGI là như thế này:

2010-08-16 02:21:12-0500 [-] 127.0.0.1 - - [16/Aug/2010:07:21:11 +0000] "GET /statics/js/monitor_rooms.js HTTP/1.1" 304 - "http://localhost:11111/chat/monitor_rooms" "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8" 

Hiện được lặp lại hai lần về cơ bản. Tôi nghĩ rằng tôi nên sử dụng định dạng của riêng tôi nhưng tiếc là tôi không thể tìm thấy nó trong tài liệu của xoắn (không có gì khi đăng nhập ở đó)

  1. Cách tốt nhất để giải quyết đăng nhập từ 3 nguồn là gì?
  2. Tôi muốn chuyển đến hàm nào trong twisted.log để thiết lập trình định dạng của riêng mình (startLogging không chứa câu trả lời)
  3. Giải pháp tốt hơn những gì tôi đã đề xuất là gì? (Tôi không thực sự có kinh nghiệm trong việc thiết lập nhật ký.)

Trả lời

1

Heh. Tôi đang suy nghĩ về chính xác vấn đề này. Những gì tôi đã đưa ra là một ứng dụng Twisted riêng biệt ghi lại các thông điệp mà nó nhận được qua một socket. Bạn có thể cấu hình đăng nhập Python để gửi tới một socket và bạn có thể cấu hình việc ghi nhật ký của Twisted để gửi tới việc ghi nhật ký Python. Vì vậy, bạn có thể nhận được tất cả mọi thứ để gửi tin nhắn đăng nhập vào một quá trình duy nhất (mà sau đó sử dụng đăng nhập của Python để đăng nhập chúng vào đĩa).

Tôi có một số bằng chứng ban đầu của mã khái niệm tại http://www.acooke.org/cute/APythonLog0.html

Điều quan trọng còn thiếu là nó sẽ được tốt đẹp để chỉ ra các thông điệp đến từ nguồn nào. Bạn không chắc chắn cách tốt nhất để thêm vào đó (một cách tiếp cận sẽ là chạy dịch vụ trên ba cổng khác nhau và có một tiền tố khác nhau cho mỗi cổng).

PS Làm thế nào Orbited làm việc? Đó là trong danh sách của tôi tiếp theo ...

11

Bạn có thể sử dụng đối số từ khóa system để twisted.python.log.msg để tùy chỉnh thông báo.

Giả sử bạn đã có:

log.msg("Service ready for eBusiness!", system="enterprise") 

Bạn sẽ nhận được đăng nhập đầu ra như thế này:

2010-08-16 02:21:12-0500 [enterprise] Service ready for eBusiness! 

Sau đó bạn có thể có mỗi dịch vụ của bạn thêm system="wsgi/orbited/..." để họ log.msglog.err cuộc gọi.

Tôi đã tìm thấy this đào qua nguồn lần cuối cùng tôi đã làm việc với Twisted.

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