2012-02-10 21 views
8

export logback.configurationFile=123 trên mac os x nhận điều này: "-bash: xuất khẩu:` logback.configurationFile = 123' : không phải là một định danh hợp lệ"logback xác định vị trí của tập tin cấu hình mặc định như một thuộc tính hệ thống không làm việc

Đã thử export logback_configurationFile=123 hoạt động. nhưng logback dường như không nhận ra rằng biến env. Bất kỳ đề xuất?

+0

Liệu logback thậm chí tìm kiếm biến đó? Tôi nghĩ rằng nó đã tìm logback.xml trên classpath? –

+0

. nếu tôi làm java -Dlogback.configurationFile = bất cứ điều gì, nó sẽ làm việc. – Bobo

+0

tốt đẹp, tôi khá chắc chắn rằng bash sẽ không cho phép dấu chấm trong các biến env (bash là mặc định trong OsX nếu tôi nhớ correclyt). Có vỏ hỗ trợ này như csh và tcsh ... –

Trả lời

26

-Dlogback.configurationFile không giống như đặt nó làm biến môi trường.

Cờ -D là tham số Java cho chương trình của bạn (có thể truy cập bởi System.getProperty()) trong khi biến môi trường được xác định bởi export sẽ có thể truy cập bởi System.getenv(). Nhìn vào mã Logback có vẻ như nó sử dụng System.getProperty() để đọc giá trị logback.configurationFile. Vì vậy, trên thực tế bạn phải truyền tham số cho JVM khi khởi động, điều này có nghĩa là bạn có thể đặt biến môi trường thành bất kỳ thứ gì bạn thích và sau đó chỉ sử dụng nó khi bạn khởi động JVM.

export LOGBACK_CONFIG_FILE_LOCATION=/tmp/logback.conf 
java -Dlogback.configurationFile=${LOGBACK_CONFIG_FILE_LOCATION} 
+0

đó là rất hữu ích, cảm ơn! – Bobo

2

Tôi đoán rằng cách này cũng hoạt động. Nhưng tôi không thực sự tự mình thử nó.

export JAVA_OPTS="$JAVA_OPTS -Dlogback.configurationFile=123" 

Sau đó, bạn sẽ không cần phải đặt chọn tham gia cuộc gọi của ứng dụng. Nhưng nhược điểm là tất cả các chương trình Java đang chạy sẽ sử dụng cài đặt này.

+4

Suy đoán không giúp được ai. Hãy dùng thử hoặc không trả lời. – johannes

1

Bạn cũng có thể thực hiện như sau Xuất đối số JVM của bạn bằng cấu hình đăng nhậpFile.

export ALC_JVM_ARGS="-Dlogback.configurationFile=logconfig.xml" 

xuất khẩu điều khác mà bạn cần như lớp học chính và đó là lý lẽ

export MAIN_CLASS="Spring" 
export MAIN_CLASS_ARGS="beans.xml" 

Sau đó, thực hiện chương trình của bạn

exec java $ALC_JVM_ARGS $MAIN_CLASS $MAIN_CLASS_ARGS 
Các vấn đề liên quan