Bạn chắc chắn có thể dành nhiều thời gian quá kỹ thuật cho vấn đề này.
Đối với các ngôn ngữ có triển khai ghi nhật ký chính tắc, chỉ cần khởi tạo trình ghi nhật ký chính tắc trực tiếp trong mỗi lớp.
Đối với các ngôn ngữ không có triển khai chính tắc, hãy thử tìm một khung mặt tiền đăng nhập và tuân theo nó. slf4j là một lựa chọn tốt trong Java.
Cá nhân tôi muốn gắn bó với một triển khai khai thác cụ thể và gửi mọi thứ đến syslog. Tất cả các công cụ phân tích nhật ký tốt có khả năng kết hợp nhật ký sysout từ nhiều máy chủ ứng dụng thành một báo cáo toàn diện.
Khi chữ ký hàm bao gồm một hoặc hai dịch vụ phụ thuộc cũng như một số đối số "thực", tôi đặt các phụ thuộc cuối cùng:
int calculateFooBarSum(int foo, int bar, IntegerSummationService svc)
Vì các hệ thống của tôi có xu hướng chỉ có năm hoặc ít hơn các dịch vụ như vậy, tôi luôn luôn đảm bảo các dịch vụ được bao gồm theo cùng một thứ tự trên tất cả các chữ ký chức năng. Thứ tự chữ cái là tốt như bất kỳ. (Ngoài ra: duy trì phương pháp tiếp cận phương pháp này để xử lý mutex cũng sẽ làm giảm cơ hội phát triển bế tắc của bạn.)
Nếu bạn thấy mình tiêm hơn một tá phụ thuộc vào ứng dụng của mình, thì hệ thống có thể cần được chia thành các hệ thống con riêng biệt (tôi có dám nói là microservice không?).