2010-11-11 30 views
6

Tôi đang viết một ứng dụng bằng Ruby và thư viện Eventmachine. Tôi thực sự thích ý tưởng của I/O không bị chặn và các hệ thống điều khiển sự kiện, vấn đề tôi đang gặp phải là ghi nhật ký. Tôi đang sử dụng thư viện logger chuẩn của Ruby. Nó không phải là đăng nhập mất mãi mãi nhưng nó có vẻ giống như một cái gì đó mà không nên chặn và nó. Có một thư viện ở đó một nơi nào đó mà mở rộng thực hiện logger tiêu chuẩn của Ruby để không bị chặn hoặc tôi chỉ nên gọi EM :: trì hoãn cho các cuộc gọi đăng nhập của tôi? Có cách nào tôi có thể làm cho eventmachine làm điều này cho tôi?Làm thế nào để đăng nhập với Ruby và eventmachine?

+0

Bạn có cố gắng ủy quyền ghi nhật ký cho một chuỗi mới không? – AndrewKS

+0

Đó là những gì EM :: trì hoãn sẽ cho phép tôi làm nhưng tôi đang tìm cách tránh nó. – Justin

Trả lời

3

tôi đã kết thúc gói các logger trong một lớp singleton rằng started a thread và có một hàng đợi FIFO. Ghi nhật ký sẽ đổ thông tin nhật ký vào hàng đợi và chuỗi chỉ được lặp lại, kéo công cụ ra khỏi hàng đợi và sử dụng trình ghi nhật ký thực để ghi nhật ký. Không thực sự mô hình lò phản ứng nhưng nó sẽ không nhai lên hồ bơi thread EM của tôi hoặc.

Với singleton này, bạn chỉ có thể có một logger nhưng đây là những gì tôi đã làm trên github.

+0

bạn có thể chia sẻ một số mã không? –

+1

Liên kết đến những gì tôi đã đưa lên github. Bạn đã cho tôi để đi mã nguồn mở! =) – Justin

+0

Có một gem đăng nhập không sinh ra các luồng, và thay vào đó có sử dụng xử lý không đồng bộ gốc với các cuộc gọi lại không? –

1

Nếu bạn đang ở trên một hệ thống với Syslog bạn có thể có một cái nhìn tại EM-Syslog

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