2015-07-17 23 views
8

Tôi có một Trình bổ sung RollingFile được định nghĩa trong tệp log4j2.xml của mình.Tham số JVM của người dùng trong cấu hình log4j2

<RollingFile name="RollingFile" fileName="/logs/app.log" 
      filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
      <PatternLayout> 
       <Pattern>%d{HH:mm:ss.SSS} - %-5p - %m - [%l]%n</Pattern> 
      </PatternLayout> 
      <Policies> 
       <TimeBasedTriggeringPolicy /> 
       <SizeBasedTriggeringPolicy size="10 MB" /> 
      </Policies> 
      <DefaultRolloverStrategy max="20" /> 
</RollingFile> 

Những gì tôi muốn làm là để vượt qua tham số này để JVM lúc khởi động:

-Dapp_home=/home/admin/server 

Các documentation là khá thẳng về phía trước. Và từ những gì tôi hiểu nó sẽ hoạt động như sau:

<RollingFile name="RollingFile" fileName="${jvmrunargs:app_home}/logs/app.log" 

Nhưng không. Tôi xác minh rằng nó đang làm việc nói chung bằng cách sử dụng đường dẫn Absolut.

Trong một ứng dụng khác mà tôi sử dụng log4j (1.x) nó hoạt động như thế này:

log4j.appender.file.File=${app_home}/logs/app.log 

Trả lời

13

Hãy xem phần System Properties Lookup của tài liệu. Nếu bạn xác định một biến là tài sản sử dụng -D như thế này hệ thống:

-Dapp_home=/home/admin/server 

sử dụng

${sys:app_home} 

trong cấu hình Log4j 2 của bạn để truy cập vào nó.

+1

Câu trả lời của bạn được viết tốt hơn, nhưng nội dung/câu trả lời giống nhau. Tôi sẽ xóa của tôi. Có một nút chỉnh sửa cho một lý do, sử dụng nó thay vì gửi một bản sao. – alan7678

+0

Tôi chưa bao giờ sử dụng nút chỉnh sửa cho bất kỳ điều gì khác ngoài định dạng mã. Nó cảm thấy như giả mạo với tài sản của người khác. Nhưng tôi đoán đó là cách Stackoverflow là nghĩa vụ phải làm việc. Tôi sẽ nhớ nó lần sau. Cảm ơn đã chỉ ra điều đó! – hzpz

+0

Câu trả lời giống nhau, cùng một kết quả! Nó hoạt động! :) Cảm ơn cả hai người! – Chris

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