2013-11-14 19 views
5

Tôi muốn có một cấu hình duy nhất sẽ chạy trong nhiều môi trường bằng cách thay đổi thuộc tính hệ thống. Sau đây là ví dụ:Làm cách nào để chỉ định giá trị mặc định cho thuộc tính log4j

log4j.appender.file.File=/opt/apps/${myEnvironment}/log/MyService.log 

Tuy nhiên, tôi muốn đảm bảo nó vẫn hoạt động bình thường nếu ai đó quên đặt thuộc tính hệ thống. Có cách nào để chỉ định giá trị mặc định trong tệp thuộc tính không?

Trả lời

2

Điều đó có thể xảy ra. Theo tài liệu API cho org.apache.log4j.PropertyConfigurator, biến của bạn trước tiên nên tìm giá trị của nó trong thuộc tính hệ thống và nếu không tìm thấy nó ở đó, thay vào đó, tìm kiếm sẽ thông qua tệp cấu hình.

Tất cả giá trị tùy chọn thừa nhận thay thế biến. Cú pháp của biến số thay thế tương tự như của vỏ Unix. Chuỗi giữa việc mở một " " $ {"và đóng"} "được hiểu là khóa. Giá trị của biến số thay thế có thể được định nghĩa là thuộc tính hệ thống hoặc trong chính tệp cấu hình . Giá trị của khóa được tìm kiếm lần đầu tiên trong thuộc tính hệ thống và nếu không tìm thấy ở đó, nó sẽ được tìm kiếm trong tệp cấu hình được phân tích cú pháp. Giá trị tương ứng thay thế chuỗi $ {variableName}. Ví dụ: nếu hệ thống java.home được đặt thành/home/xyz, thì mỗi lần xuất hiện của chuỗi $ {java.home} sẽ được hiểu là/home/xyz.

https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PropertyConfigurator.html

Bạn sẽ phải kiểm tra xem các thiết lập biến trong các tập tin cấu hình sẽ ghi đè lên các thuộc tính hệ thống mặc dù.

Các vấn đề liên quan