2008-12-03 24 views
9

Tôi cần một khung nhỏ, di động để ghi nhật ký trên Linux nhúng. Lý tưởng nhất nó sẽ xuất ra một tập tin hoặc một ổ cắm, và có một số loại quay vòng/nén cũng sẽ được tốt đẹp. Cho đến nay, tôi đã tìm thấy rất nhiều khung công tác, nhưng hầu như tất cả chúng đều có quy trình xây dựng khó khăn hoặc yêu cầu sử dụng khung ứng dụng (ví dụ: log4cxx yêu cầu Apache Portable Runtime, mà tôi không muốn bận tâm. ..).Khung đăng nhập cho Linux nhúng?

Chỉ cần tìm một thứ gì đó đơn giản và mạnh mẽ, nhưng mọi thứ tôi thấy là phức tạp hoặc đòi hỏi rất nhiều rác thứ cấp chỉ để chạy.

Đề xuất? (và nếu câu trả lời là cuộn của riêng tôi, đó là tốt, nhưng ... nó là tuyệt vời để tránh điều đó)

Trả lời

0

Thực hiện cơ chế đăng nhập rất mạnh mẽ trong C lấy khoảng 1000 dòng mã (từ cơ sở mã của chúng tôi). 90% số này xác định các phần khác nhau. Điều này bao gồm các macro khác nhau DBG_E DBG_W DBG_TRACE v.v ... và chia nhỏ thành phần, chạy thời gian thay đổi cấp gỡ lỗi và mô-đun gỡ lỗi (không bao gồm nén chỉ đơn giản là trừu tượng in có thể được triển khai theo các cách khác nhau như tệp/socket/nối tiếp, v.v ...) .
Tôi sẽ ước tính mất khoảng vài ngày để triển khai. Phía bên dưới, bạn sẽ có một vài thứ mà bạn sẽ nhận được một số thứ cần thiết để đáp ứng nhu cầu của bạn và không có gì nữa, tôi hiểu rằng bạn đang làm việc trên nền tảng nhúng và dấu chân và sử dụng bộ nhớ là quan trọng, giải pháp tốt nhất và tối ưu hóa sẽ là một trong những bạn viết. Chúng tôi đã đầu tư vài ngày đó. và sử dụng nó trên các sản phẩm/dự án khác nhau và điều chỉnh/cải thiện với thời gian qua theo nhu cầu thực tế. Vấn đề chính của giải pháp chung mà nó thường sẽ làm những gì bạn cần và nhiều hơn nữa, điều này hơn thường chỉ là eo của tài nguyên.

0

Tôi không thể tưởng tượng rằng nền tảng của bạn quá nhỏ để bao gồm log4cxx và APR, không phải là một thư viện lớn, và thậm chí nền tảng nhỏ nhất có thể có không gian cho chúng.

Bạn chỉ có thể sử dụng syslog, được cung cấp bởi thư viện C - một syslog daemon được cung cấp bởi busybox (không nghi ngờ gì, bạn đã sử dụng nếu bạn đang ở trên một nền tảng thực sự nhỏ). Tôi không biết liệu syslogd của busybox có thể đăng nhập vào mạng hay không, nhưng nó có một mức độ linh hoạt nào đó. Bạn có thể thực hiện xoay vòng bằng cách sử dụng các kịch bản lệnh shell khá tầm thường.

9

Sử dụng syslog(3) và syslogd từ BusyBox. BusyBox có thể rất nhỏ gọn khi bị tước xuống và không phụ thuộc vào bất kỳ thứ gì ngoài libc. Bạn có thể loại bỏ tất cả mọi thứ bạn không muốn vì vậy hoàn toàn có thể sử dụng nó chỉ để ghi nhật ký.

Chúng tôi sử dụng BusyBox trên một số hệ thống nhúng, cả Linux và uClinux, đồng thời tìm các cơ sở ghi nhật ký của nó có độ tin cậy cao.

1

Có thể bạn nên cân nhắc dành thời gian cho một khung đăng nhập tốt, vì đây là những gì bạn sẽ sử dụng trên Linux nhúng của mình. ... và printf ...

Tôi đã nấu thứ gì đó để tôi có thể bật/tắt các mức ghi nhật ký khác nhau cho mỗi mô-đun trong thời gian chạy.

Bạn đã bao giờ thử gỡ lỗi các ứng dụng đa luồng trên Linux chưa?

Chúc may mắn!

+0

Tôi đồng ý. Trong một dự án trước đây, chúng tôi đã phát triển một cái gì đó tương tự với kiểm soát thời gian chạy đăng nhập. Điều này làm việc ra tuyệt vời! Quá tệ, chúng tôi không thể mở mã nguồn. –

2

Tôi không có kinh nghiệm với mô đun log4cxx nhưng tôi đang sử dụng APR trên một mục tiêu được nhúng chạy Linux (dựa trên bộ xử lý Atmel AT91SAM926x). Nó thực sự đơn giản để cấu hình và biên dịch (nhiều hơn hoặc ít hơn ./configure --host = arm-none-linux-gnueabi) vì vậy tôi sẽ không sợ đi xuống đường dẫn log4cxx.

0

Sử dụng klogd nó đọc thông điệp nhật ký hạt nhân (từ/proc/kmsg hạt nhân) và chuyển hướng các thư đó đến thư mục thích hợp. bạn có thể sử dụng người dùng có thể cấu hình syslogd daemon cùng với klogd để chuyển hướng thông điệp hạt nhân vào các tệp thích hợp trong thư mục/var/log /. Ví dụ nhật ký liên quan đến dịch vụ thư sẽ được lưu trữ trong /var/log/main.log và nhật ký liên quan đến quá trình khởi động hạt nhân sẽ được lưu trữ trong /var/log/boot.log. Người dùng có thể cấu hình phân tích nhật ký bằng cách sử dụng tệp cấu hình syslogd.

Nhưng việc sử dụng syslogd có thể dẫn đến suy giảm hiệu suất hệ thống của bạn bởi vì đối với mỗi daemon thông điệp log syslog sẽ làm hoạt động đĩa để lưu trữ đó đăng nhập vào tập tin thích hợp

chuỗi Log

Tin nhắn từ hạt nhân --->klogd (tin nhắn truy cập từ vòng đệm kernel) ->syslogd ->/var/log/*

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