Các mẫu mã dịch vụ SDV Core trong /system/software_defined_vehicle/samples cho phép bạn bắt đầu xây dựng các dịch vụ của mình. Mỗi mẫu chứa một tệp README mô tả trường hợp sử dụng.
Sử dụng API ghi nhật ký
Để tìm hiểu thêm về các hướng dẫn được cung cấp, hãy xem:
Mẫu nhật ký cơ bản
logging.cpp trình bày việc ghi vào các vùng đệm main, system và radio.
Để đọc nội dung mô tả ngắn về các vùng đệm nhật ký có sẵn, hãy xem phần Xem vùng đệm nhật ký thay thế.
Cách chạy mẫu mà không có nhật ký có điều kiện, chẳng hạn như
ALOGI_IF:logging_sdv_sampleĐể chạy mẫu và in nhật ký có điều kiện, chẳng hạn như
ALOGI_IF:LOGIF=1 logging_sdv_sample
Mẫu ghi nhật ký có cấu trúc
Tệp mẫu: structured_logging.cpp
Để chạy mẫu, hãy ghi nhật ký vào vùng đệm nhật ký
events:structured_logging_sdv_sample
Các vùng đệm nhật ký event, security và stats chứa dữ liệu có cấu trúc thay vì văn bản tự do.
Dữ liệu có cấu trúc được ghi nhật ký bằng API danh sách sự kiện, luôn được ghi nhật ký với mức độ ưu tiên INFO và mã nhận dạng thẻ dạng số.
Bạn có thể xác định tệp .logtags bằng thuộc tính logtags trong Android.bp.. Khi được cung cấp, logcat sẽ dùng thuộc tính này để lấy tên thẻ từ mã nhận dạng thẻ dạng số. Sau đó, bạn có thể dùng tên thẻ để lọc nhật ký có cấu trúc. Để biết thông tin chi tiết và nội dung mô tả về định dạng tệp, hãy xem nhận xét trong tệp logcat event.logtags.
Trong quy trình xây dựng, tất cả các tệp logtags sẽ được hợp nhất và đặt vào tệp /system/etc/event-log-tags trong hình ảnh hệ thống Android.
Biên dịch một mẫu lọc nhật ký thời gian
Tệp mẫu: compile_time_log_filtering.cpp
Mẫu này chứa các macro mà bạn có thể điều chỉnh để xoá một số nhật ký khỏi tệp thực thi. Hãy xem mã nguồn để biết thông tin chi tiết.
Ví dụ về việc lọc nhật ký: log_filtering.cpp
Để chạy mẫu, hãy đặt mức độ ưu tiên tối thiểu của nhật ký thành
WARN:LOGLEVEL=WARN log_filtering_sdv_sample
Việc lọc nhật ký chịu ảnh hưởng của các thuộc tính hệ thống. Đối với tất cả nhật ký có
log.tag.<tag>persist.log.tag.<tag>
Đối với tất cả nhật ký trong hệ thống:
log.tagpersist.log.tag
Để chọn cấp độ nhật ký đã chọn (được kiểm tra theo thứ tự), bạn có thể đặt mỗi giá trị thành V, D, I, W hoặc E.
Cấp độ nhật ký hiệu quả là cấp độ được đặt trên thuộc tính hệ thống đầu tiên có giá trị, có thể thấp hơn hoặc cao hơn cấp độ nhật ký do ứng dụng đặt bằng lệnh gọi __android_log_set_minimum_priority. Khi không có thuộc tính nào được thiết lập, cấp độ được thiết lập bằng __android_log_set_minimum_priority sẽ áp dụng.
Để biết thông tin chi tiết, hãy xem bài viết Tổng quan về hệ thống ghi nhật ký.
Chạy mẫu, đặt thẻ nhật ký mặc định thành
example_tag:LOGTAG=example_tag log_filtering_sdv_sample
Mẫu này cũng chứa một định nghĩa macro LOG_TAG đã được nhận xét mà bạn có thể dùng để đặt thẻ nhật ký cho tất cả thông báo nhật ký. Thẻ được đặt theo cách này sẽ ghi đè thẻ được đặt trong thời gian chạy bằng __android_log_set_default_tag.
Nếu macro LOG_TAG không được xác định và ứng dụng không gọi __android_log_set_default_tag, thì thẻ mặc định sẽ là kết quả của getprogname(). Ví dụ: tên tệp thực thi.