cuốn sách gpt4 ai đã làm

Cách cho phép ghi nhật ký từ tắt máyHook đến bất kỳ lớp nào

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 08:25:08 26 4
mua khóa gpt4 Nike

Giả sử tắt máyHook là:

 lớp ShutdownHolder mở rộng Chủ đề {  

công khai void run() {
Trình ghi nhật ký nhật ký = LoggerFactory.getCoreLogger(ShutdownHolder.class);
thử {
logger.info("Móc tắt máy đang chạy...");
doS Something();
logger.info("Kết thúc móc tắt máy.");
} bắt(Ngoại lệ e) {
logger.severe("LỖI không mong muốn khi tắt máy", e);
}
}
}

Làm cách nào để tránh trình ghi nhật ký không đóng trước khi ShutdownHook kết thúc?

Ví dụ: phương thức doSomething() có thể gọi nhiều phương thức trên các lớp có thể truy cập khác để ghi vào nhật ký. Tôi không muốn bỏ qua tất cả các nhật ký này.

câu trả lời hay nhất

Vì vậy, ngoài một số mẹo phản ánh, rất tiếc là tôi không thấy cách nào dễ dàng để thực hiện việc này. Dưới 1.6 JDK, tắt Hook storage trong Bản sắcHashmap , ánh xạ này không cung cấp thứ tự được đảm bảo. Trên thực tế, các hook tắt máy được gọi theo thứ tự ngẫu nhiên dựa trên cấu trúc bên trong của bản đồ.

Theo như sự phản ánh, tôi đã thử làm như sau, nhưng hookMap là vô giá trị đối với tôi Nếu bạn có thể làm cho nó hoạt động thì có thể bạn có thể xóa Log4j Hook và gọi nó theo cách thủ công ở cuối Hook hoặc thứ gì đó.

Class clazz = Class.forName("java.lang.ApplicationShutdownHooks");
Trường trường = clazz.getDeclaredField("hooks");
field.setAccessible(true);
@SuppressWarnings("không được chọn")
Map hookMap = (Map) field.get(null);

Nhưng, Tôi thực sự khuyên bạn nên thực hiện các thao tác khác ngoài việc đóng Hookkhácvận hành. hiện hữu chủ yếu Còn việc gọi hook của riêng bạn trước khi kết thúc thì sao? Đối với chúng tôi, chúng tôi sử dụng rất nhiều mẫu Spring và WasteBean. Những hạt đậu nàyĐược gọi theo thứ tự ngược lại khi lớp được khởi tạo, vì vậy mọi thứ dựa vào trình ghi nhật ký vẫn có trình ghi nhật ký khi đóng.

Hy vọng điều này sẽ giúp.

Về java - Cách cho phép ghi nhật ký từ ShutterHook vào bất kỳ lớp nào, chúng tôi tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/8715217/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress