Tôi đang làm việc trên một dự án, và hiện đang làm việc để thực hiện một số ghi nhật ký với log4j và tôi đã tò mò về cách tôi nên thực hiện các bản ghi. Hai triển khai Tôi đá xung quanh như sau:Ghi nhật ký Java với lớp trừu tượng
Đầu tiên Lựa chọn
Sử dụng đơn log từ siêu lớp cho lớp đó và mọi tầng lớp phụ:
public abstract class AbstractFoo {
protected static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
public void someMethod() {
LOG.info("Using abstract log");
}
}
Second Lựa chọn
Sử dụng nhật ký riêng cho mỗi lớp, siêu và người đăng ký:
public abstract class AbstractFoo {
private static Log LOG = LogFactory.getLog(AbstractFoo.class);
...
}
public class Foo extends AbstractFoo {
private static Log LOG = LogFactory.getLog(Foo.class);
public void someMethod() {
LOG.info("Using own log");
}
}
Điều gì có ý nghĩa hơn và tại sao?
Cho đến nay tôi đã thấy hai phương pháp: logger tĩnh (như câu hỏi) và logger không tĩnh (như trong ví dụ của bạn). Không phải là giải pháp logger tĩnh tốt hơn (một ví dụ của logger cho tất cả các trường hợp)? –
logger tĩnh tốt hơn nếu chúng giống nhau cho tất cả các trường hợp. Trong trường hợp lớp trừu tượng, lớp của các cá thể không giống nhau. –
Tôi thích điều này, nó có vẻ giống như một cách tốt để kết hợp cả hai lựa chọn.Bạn kết thúc với một bản ghi duy nhất nhưng nó liên kết với lớp thích hợp. +1 – shuniar