Một giải pháp thay thế tiềm năng để điều chỉnh thuộc tính additivity
là kiểm tra logger của bạn từ cụ thể nhất cho đến chung nhất. Trong ví dụ sau, chúng tôi hy vọng sẽ thấy việc ghi nhật ký kép trong Bảng điều khiển cho bất kỳ sự kiện nhật ký nào xảy ra trong foo.bar.LoggingExampleClass. Nó sẽ an toàn để loại bỏ thêm appender Console từ foo.bar.LoggingExampleClass Logger vì nó đã được Root logger bao trả.
<Logger name="foo.bar.LoggingExampleClass" level="DEBUG">
<AppenderRef ref="Console" /> <!-- THIS APPENDER COULD BE REMOVED -->
<AppenderRef ref="FooBarPackageLogging" />
</Logger>
<Root level="WARN">
<AppenderRef ref="Console" />
<AppenderRef ref="MainLogFile" />
</Root>
Có sự cân bằng với cả phương pháp điều chỉnh độ nhạy và cách tiếp cận điều chỉnh trình điều chỉnh. Tắt tính năng bổ sung có thể vô tình dừng trình phụ của trình ghi nhật ký mức mong muốn từ việc sử dụng. Trong ví dụ trên, đặt thuộc tính additivity="false"
trên foo.bar.LoggingExampleClass Logger có nghĩa là sự kiện ghi nhật ký sẽ không được thêm vào MainLogFile được tham chiếu trong trình ghi nhật ký Gốc.
Mặt khác, dựa vào phụ huynh có thể có vấn đề nếu các phụ huynh thay đổi mà không kiểm tra các hiệu ứng trên logger chi tiết hơn. Ví dụ, giả sử có một yêu cầu rằng foo.bar.LoggingExampleClass sự kiện ghi nhật ký nên được ghi vào Console. Họ hiện đang ở trong cấu hình ví dụ ở trên do sự bổ sung, ngay cả khi trình bổ sung Bảng điều khiển của foo.bar.LoggingExampleClass Logger bị xóa. Tuy nhiên, nếu ứng dụng Console cũng bị xóa khỏi trình ghi nhật ký gốc mà không có bất kỳ điều chỉnh bổ sung nào, yêu cầu sẽ không còn được đáp ứng nữa.
Có thể sự cố cấu hình hoặc sự cố khởi tạo. Bạn khởi tạo trình ghi nhật ký ở đâu? Đừng gọi bạn là Logger.getLogger (SomeClass.class) hai lần? Một số mã bổ sung có thể cung cấp cho chúng tôi thêm thông tin để giúp bạn. – MaSEL