Clojure:
Ghi vào lỗi chuẩn

Làm thế nào:

Để viết vào lỗi chuẩn trong Clojure, bạn sẽ sử dụng binding với *err*. Dưới đây là một ví dụ nhanh:

(binding [*err* *out*]
  (println "Điều này sẽ đi đến lỗi chuẩn"))

Mẫu đầu ra (trong shell của bạn):

$ clj your_script.clj 2> error.log
$ cat error.log
Điều này sẽ đi đến lỗi chuẩn

Đoạn mã này liên kết *err* với *out*, là đầu ra chuẩn, để bạn có thể thấy những gì thường sẽ đi đến stderr.

Đào Sâu

Theo lịch sử, các hệ thống Unix có hai luồng đầu ra riêng biệt, stdoutstderr, cho các loại dữ liệu khác nhau. Trong Clojure, *out* đề cập đến stdout*err* đến stderr. Các lựa chọn thay thế cho binding bao gồm sử dụng Java interop trực tiếp (ví dụ, (.println System/err "tin nhắn")). Về mặt triển khai, *err* là một var động, cho phép liên kết cục bộ theo thread - một điểm tinh tế có thể ảnh hưởng đến cách lỗi được ghi trong các ứng dụng đồng thời.

Xem Thêm

Để hiểu rõ hơn về các luồng chuẩn, những tài liệu sau cũng có thể hữu ích: