2012-01-23 31 views
16

Tôi đang cố gắng để lấy stacktrace từ handler onException trong Apache Camel:stacktrace từ Camel Context onException

<onException> 
      <exception>java.lang.Exception</exception> 
      <handled> 
       <constant>true</constant> 
      </handled> 

      <setHeader headerName="exception"> 
       <simple>${exception}</simple> 
      </setHeader> 
    </onException> 

Tuy nhiên, ở trên chỉ cho thấy ngoại trừ thay vì toàn bộ stacktrace.

Tôi hiểu rằng Camel lưu trữ ngoại lệ bị bắt làm thuộc tính trên Exchange bằng khóa: Exchange.EXCEPTION_CAUGHT, nhưng cách này có thể được truy lục từ tệp tuyến đường ngữ cảnh lạc đà?

Trả lời

21

Sử dụng exception.stacktrace để lấy stacktrace. Xem các biến được liệt kê trong bảng ở trang này: http://camel.apache.org/simple

<simple>${exception.stacktrace}</simple> 

Ngoài ra còn có một $ {exception.message} để tham khảo các thông điệp ngoại lệ riêng của mình.

+0

Cảm ơn, điều này đã có tác dụng. Tạo ra một loại đậu là một lựa chọn khác mà tôi có trong đầu. –

+0

Cảm ơn Claus. Chỉ cần một câu hỏi về điều này - là nó cũng có thể sử dụng 'exception.class'? – vikingsteve

+0

Ok, tôi đã trả lời câu hỏi này - vâng, có thể. Nhưng tốt hơn là chỉ sử dụng 'exception' trong biểu thức đơn giản, vì nó cung cấp cho bạn tên lớp và thông báo. – vikingsteve