2012-11-27 63 views
7

Đây là cấu hình của tôi:OSGi + Logback + slf4j - Cấu hình chạy Eclipse

Chúng tôi đang phát triển ứng dụng OSGi và muốn bao gồm ghi nhật ký. Tôi quyết định sử dụng slf4j + logback.

Chúng tôi đang sử dụng Eclipse như một IDE và Tycho để hưởng lợi từ IDE Eclipse như Trình chỉnh sửa Manifest, v.v.

Vì vậy, tôi đã thử như sau:

Tạo một plugin mới với MANIFEST.MF sau:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: Createcommand 
Bundle-SymbolicName: de.hswt.oms.ws.wsr.createcommand 
Bundle-Version: 1.0.0.qualifier 
Bundle-RequiredExecutionEnvironment: JavaSE-1.7 
Import-Package: de.hswt.oms.ws.command.wsr, 
de.hswt.oms.ws.ds.core.data.impl, 
org.slf4j 
Service-Component: OSGI-INF/component.xml 

Bây giờ khi tôi chuyển sang Chạy -> Run Configurations -> OSGi Framework và chọn của tôi Nhóm và nhấp vào "Thêm plugin yêu cầu" hơn 100 Gói sẽ được chọn và tôi nhận được rất nhiều lỗi và ngoại lệ.

Vì vậy, tôi đã đưa ra một plugin mới từ Chum hiện trong đó bao gồm ba lọ sau:

  • logback-classic-1.0.7
  • logback-core-1.0.7
  • com. springsource.slf4j.api-1.6.1 (Tôi không tin rằng đây là một ý tưởng tốt, nhưng hey ...)

Nếu tôi tạo cấu hình chạy mới theo cách thủ công (không nhấp vào "thêm gói yêu cầu", nó hoạt động như mong đợi nhưng theo như tôi nhấn "add requir ed bó "Tôi quay trở lại với hơn 100 Gói sau đó với nhiều lỗi (ví dụ: một số nội dung của Jetty ...)

Câu hỏi của tôi là: Làm cách nào để kích hoạt logback và slf4j trong ứng dụng OSGi của tôi và sử dụng nó trong nhật thực và cấu hình nó đúng cách?

Nếu bạn cần thêm thông tin, vui lòng hỏi.

Trả lời

8

AFAIK có một số vấn đề trong tiêu đề tệp kê khai gói trong các khay Logback/SLF4J chính thức hiện tại. Tuy nhiên, bạn chỉ cần ba lọ/gói sau đây. Không có yêu cầu nào khác cho chức năng cơ bản.

  • SLF4J API
  • Logback Lõi
  • Logback cổ điển

Tại Eclipse chúng tôi đặt các bó trong Orbit để tái sử dụng qua các dự án. Chúng tôi áp dụng một số sửa đổi cho tiêu đề tệp kê khai mà chúng tôi cho là có lợi. Ví dụ, chúng tôi cung cấp liên kết SLF4J thực tế dưới dạng một đoạn để tránh sự phụ thuộc vòng tròn của bình API SLF4J gốc.

Dưới đây là các liên kết tải về cho các bó:

Bạn cũng có thể muốn:

Xin lưu ý rằng "Add Required plugins" không phải là thông minh đủ. Nó có thể chọn quá nhiều hoặc quá ít trình cắm thêm. Đôi khi, API dịch vụ được phân phối trong một gói nhưng việc triển khai dịch vụ thực tế được phân phối trong gói thứ hai. Nó có thể không chọn gói đó.

0

Nếu bạn muốn nó sử dụng với Eclipse Equinox, bạn có thể thử Eclipse-BuddyPolicy. Điều này cho phép một plugin tải tất cả các lớp từ một plugin khác mà không cần nhập nó một cách rõ ràng. Điều này có thể giải quyết vấn đề của bạn.

Thêm vào Manifest của bạn từ bó với các lọ:

Eclipse BuddyPolicy: phụ thuộc

và bó bằng cách sử dụng khai thác gỗ

Eclipse RegisterBuddy: com .other.plugin

xem http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fmisc%2Fbundle_manifest.html

+2

Chính sách của bạn bè không phải là OSGi! Và về cơ bản, bạn đã quay trở lại địa ngục Jar ... –

2

Có một hộp kiểm nói điều gì đó như 'Giải quyết nhập khẩu tùy chọn'. Nó được bật theo mặc định, nhưng điều đó khá nhiều luôn dẫn đến hành vi mà bạn mô tả, rằng nó muốn thêm mọi thứ.

Tắt tính năng đó sẽ giúp ích. Ngoài ra, PDE có xu hướng thêm nhiều đoạn không cần thiết.

Tất cả trong tất cả, tôi hiếm khi tin tưởng Eclipse với việc thêm các gói 'đúng' cho thời gian chạy. Tôi chỉ sử dụng 'validate' và thêm bất cứ điều gì là cần thiết bằng tay, và kiểm tra lại. Nó có thể mất một vài phút nhưng tìm ra những gì đã đi sai khi bạn rời khỏi nó để PDE có thể mất vài giờ.

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