Tôi đang sử dụng Java 1.4 với Log4J.LoggerJ Logger có nên được khai báo là tạm thời không?
Một số mã của tôi liên quan đến việc tuần tự hóa và deserializing các đối tượng giá trị (POJOs).
Mỗi POJO tôi tuyên bố một logger với
private final Logger log = Logger.getLogger(getClass());
Các serializer phàn nàn của org.apache.log4j.Logger không phải là Serializable.
Tôi có nên sử dụng
private final transient Logger log = Logger.getLogger(getClass());
để thay thế?
Một vài câu hỏi bạn có thể tự hỏi mình và thêm làm chỉnh sửa cho câu hỏi của mình. Suy nghĩ của bạn về và chống lại việc tạm thời là gì? Tạm thời nghĩa là gì? – svrist
Tôi nên đề cập đến, tôi thích ý tưởng có một trình ghi nhật ký cho mỗi cá thể thay vì một cho mỗi lớp. Tôi sẽ có nhiều phiên bản của cùng một lớp được tạo và quản lý bởi một vùng chứa (nói ngữ cảnh ứng dụng Spring) và muốn chuyển mức ghi nhật ký trên cơ sở mỗi bean thay vì trên cơ sở mỗi lớp. Trong ví dụ về ngữ cảnh ứng dụng mùa xuân, trình ghi nhật ký sẽ được khai báo là một cái gì đó như tạm thời cuối cùng riêng Logger log = Logger.getLogger (getBeanName()); trong đó bean không còn là POJO và triển khai BeanNameAware – Vihung
Xem thêm [Câu hỏi thường gặp về SLF4J] (http://www.slf4j.org/faq.html#declared_static): * "Các thành viên của Logger nên được khai báo là tĩnh? [...] Tóm lại, việc khai báo các thành viên logger như các biến tĩnh đòi hỏi ít thời gian CPU hơn và có dấu chân bộ nhớ hơi nhỏ hơn. [...] Tuy nhiên, các biến mẫu có thể tạo môi trường logger riêng biệt cho mỗi ứng dụng, Có lẽ quan trọng hơn những cân nhắc đã đề cập trước đây, các biến cá thể là IOC-thân thiện trong khi các biến tĩnh thì không. "* – Arjan