Skip to content

# 17.4. log使用注意

## 17.4.1. log调试注意点

1. 调试时大量日志可以单独保存，防止丢失，方便查看

   - 内核日志：dmesg -w > /userdata/dmesg.log &

   - ALOG日志：logcat -v time -f /userdata/logcat.log &

2. 每个转存周期（10min）内产生超过rotate数量的日志会造成日志丢失

   - 首先应只输出必要的日志

   - 如果输出较多log，在设置rotate的数量时候，要考虑好所需大小

3. 不要在串口、ssh窗口实时查看日志。可能会发现丢日志，原因是输出慢，覆盖导致。如果必须，建议ssh窗口实时查看日志。

   - 比如使用logcat在串口实时查看输出，内核若输出”logcat lost message”，则说明有日志丢失。

4. J6X 日志写入存储设备保存。考虑到存储设备的寿命有限和大量存储日志对 IO/CPU性能的影响，应只输出必要的日志，正式版本不应输出大量调试日志。

   - 比如当 J6X 存储设备是 eMMC（64GB、MLC、3000次擦写）时，若每分钟写入 10MB 日志，则连续工作十年消耗27%寿命，考虑写入放大，消耗更多。

## 17.4.2. logcat使用

1. logcat命令格式

| 参数 | 描述
--- | --- | ---
1 | -b `<buffer>` | 加载一个可使用的日志缓冲区供查看，比如event和radio，默认值是main
2 | -c | 清除缓冲区中的全部日志并退出（清除完后可以使用-g查看缓冲区）
3 | -d | 将缓冲区的log转存到屏幕中然后退出
4 | -f `<filename>` | 将log输出到指定的文件中<文件名>，默认为标准输出（stdout）
5 | -g | 打印日志缓冲区的大小并退出
6 | -n `<count>` | 设置日志的最大数目<count>，默认值是4，需要和-r选项一起使用
7 | -r `<kbytes>` | 每输出<kbytes>时轮替日志文件，默认值是16，需要和-f选项一起使用
8 | -s | 设置过滤器
9 | -v `<format>` | 设置输出格式的日志消息，默认是短暂的格式