Cách tốt nhất và công cụ tốt nhất để đăng nhập vào môi trường đa luồng, sao cho mỗi luồng có trường hợp nhật ký riêng và tệp riêng biệt. điều này thậm chí có thể?Đăng nhập vào ứng dụng đa luồng trong java
Trả lời
Bạn có thể thử sử dụng một tùy chỉnh Log4J appender, trong đó có thread id như một tham số và lọc thông điệp dựa trên những gì chủ đề gọi nó. Tạo nó trên bay, đính kèm nó vào logger.
Có nhiều vấn đề với cách tiếp cận này mặc dù:
- Quá nhiều appenders sẽ làm chậm khai thác gỗ
- AppServers thường có một hồ bơi thread. Điều đó có nghĩa rằng cùng một luồng theo thời gian sẽ tham gia vào việc thực hiện các yêu cầu hoàn toàn không liên quan, mà sẽ kết thúc trong cùng một tệp nhật ký.
Tôi đề nghị bạn xem xét một cách tiếp cận đơn giản hơn: đăng nhập id chủ đề vào cùng một tệp nhật ký. Thật nhanh chóng và đơn giản, log4j có một lá cờ% để thực hiện nó. Sau đó bạn có thể grep/chia nhỏ tệp nhật ký trên mỗi id chủ đề nếu cần.
Cập nhật:
Trên thực tế, bạn có thể có một appender tùy chỉnh duy nhất, mà sẽ mở file log theo yêu cầu khi một chủ đề mới ghi một kỷ lục (appender được thực hiện trong phạm vi mà bối cảnh chủ đề, chỉ cần gọi Ðề tài. currentThread(). getName()). Nhưng bạn sẽ phải thực hiện lại tất cả các tác vụ tệp nhật ký thông thường (xoay vòng) hoặc ủy quyền nó cho người dùng chuẩn cho mỗi tệp.
Tôi có một ứng dụng đa luồng để nhận biết mỗi thread trong file log (dunno về các tập tin mutliple, tập tin duy nhất cho tôi thấy tương tranh), xác định các chủ đề được thực hiện tự động bởi khung đăng nhập, nó Log4J
Chỉnh sửa: Không có gì cần phải được thêm vào trong mã, bạn chỉ cần cấu hình appender trong logger để bao gồm [% chủ đề] mà sẽ xác định các chủ đề mà từ đó bạn đang đăng nhập thông điệp hiện nay, đây là ví dụ là từ log4net:
<appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
Dưới đây là danh sách các khác thường Java logging frameworks
tất nhiên chúng ta đều biết log4j, nhưng nếu bạn nói nó có thể, bạn có thể vui lòng chỉ cho chúng tôi thực hiện đơn giản để làm điều đó bằng cách sử dụng log4j. – mabuzer
Trong một số trường hợp, việc biết số nhận dạng chuỗi ít quan trọng hơn việc biết ngữ cảnh thực thi. Điều này đặc biệt đúng với nhiều chủ đề và ứng dụng lớn hơn. Bạn làm gì khi thay đổi ID luồng, nhưng ngữ cảnh thực thi thực tế là giống nhau (như ai đó đã đề cập với các nhóm luồng) ?. Tôi muốn sử dụng MDC (mapped diagnostic context) để theo dõi ngữ cảnh thực thi trong nhật ký. Nó tốt hơn vì bạn kiểm soát ngữ cảnh là gì. Cuối cùng, bạn có thể thiết lập bố trí các bản ghi để bao gồm MDC và sau đó dễ dàng lọc ra những gì có liên quan. Kiểm tra this tool, nó thực hiện khá nhiều thứ với MDC.
- 1. Đăng nhập vào ứng dụng đa xử lý cùng với đa luồng
- 2. Đăng nhập vào các chủ đề trong ứng dụng Rails
- 3. Ứng dụng đa luồng
- 4. Tắt ứng dụng đa luồng
- 5. Đa luồng Java trong tải CPU
- 6. Ứng dụng đa luồng dữ liệu chính
- 7. Đăng nhập trong ứng dụng DropBox
- 8. Làm cách nào để phát lại ứng dụng đa luồng?
- 9. Đăng nhập bằng các ứng dụng Java EAR
- 10. Ứng dụng không đăng nhập
- 11. GCOV cho các ứng dụng đa luồng
- 12. Ứng dụng đa luồng là gì?
- 13. Đăng nhập vào trang web với java
- 14. Đăng nhập vào một ứng dụng web PHP
- 15. Đăng nhập một lần vào ứng dụng mùa xuân
- 16. DLL và lớp trong ứng dụng đa luồng
- 17. Đăng nhập vào ứng dụng ASP.net qua tài khoản Google
- 18. Tôi nên đăng nhập vào ứng dụng sản xuất
- 19. Windows tuyên truyền thông tin đăng nhập vào ứng dụng Java trên máy tính để bàn
- 20. Đăng nhập vào "Thư viện Java Mã" libs cho các ứng dụng Android
- 21. Đọc tập tin nhanh nhất trong ứng dụng đa luồng
- 22. Cuộc gọi đa luồng trong ứng dụng Windows Forms?
- 23. Thay thế Đa luồng trong Java
- 24. Quản lý luồng và luồng ứng dụng Java
- 25. Lớp Singleton trong ứng dụng đa luồng, khóa đề xuất
- 26. Berkeley DB trong các ứng dụng đa luồng
- 27. Đăng nhập từ Ứng dụng Bên ngoài
- 28. Cách đăng xuất đúng cách ứng dụng web Java EE 6 sau khi đăng nhập
- 29. Nhập Java Project trong ứng dụng Android?
- 30. Java: giải mã luồng ký tự đa luồng
Xem http://stackoverflow.com/questions/8226615/how-to-use-log4j-in-multithread-using-java – Benj