Mã mẫu cốt lõi

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, systemradio. Để đọ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, securitystats 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.tag
  • persist.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.