Anda pasti bisa menghabiskan banyak waktu untuk merekayasa masalah ini.
Untuk bahasa dengan implementasi logging kanonik, cukup instantiate kanger logger langsung di setiap kelas.
Untuk bahasa tanpa implementasi kanonik, cobalah untuk menemukan kerangka fasad logging dan patuhi itu. slf4j adalah pilihan yang baik di Jawa.
Secara pribadi saya lebih suka tetap berpegang pada implementasi logging beton tunggal dan mengirim semuanya ke syslog. Semua alat analisis log yang baik mampu menggabungkan log sysout dari beberapa server aplikasi ke dalam laporan yang komprehensif.
Ketika tanda tangan fungsi menyertakan satu atau dua layanan dependensi serta beberapa argumen "nyata", saya menempatkan dependensi terakhir:
int calculateFooBarSum(int foo, int bar, IntegerSummationService svc)
Karena sistem saya cenderung hanya memiliki lima atau lebih sedikit layanan seperti itu, saya selalu memastikan layanan dimasukkan dalam urutan yang sama di semua tanda tangan fungsi. Urutan alfabet sama baiknya dengan yang lainnya. (Selain itu: mempertahankan pendekatan metodologis ini untuk penanganan mutex juga akan mengurangi peluang Anda mengembangkan kebuntuan.)
Jika Anda mendapati diri Anda menyuntikkan lebih dari selusin ketergantungan di seluruh aplikasi Anda, maka sistem mungkin perlu dipecah menjadi beberapa subsistem yang terpisah (berani saya katakan layanan mikro?).