WPA_SUPPLICANT的LOG列印資訊分析與調整
http://androidxref.com/8.0.0_r4
// MSG_INFO預設列印 MSG_DEBUG 預設不列印
wpa_msg(wpa_s, MSG_INFO, "Associated with " MACSTR, MAC2STR(bssid));
wpa_dbg(wpa_s, MSG_DEBUG, "State: %s -> %s",wpa_supplicant_state_txt(wpa_s->wpa_state),wpa_supplicant_state_txt(state));
// #define wpa_dbg(args...) wpa_msg(args) //wpa_dbg最終也呼叫到 wpa_msg
int wpa_debug_level = MSG_INFO;
//列印日誌的級別預設為MSG_INFO 【4】
//那麼意味著 MSG_EXCESSIVE 【1】, MSG_MSGDUMP 【2】, MSG_DEBUG 【3】 將不列印 不會輸出很多有用資訊
措施1: 在程式碼中修改此處 預設為 int wpa_debug_level = MSG_DEBUG;
措施2: 編譯時的 prject_xxx.rc 檔案中的 service wpa_supplicant /system/bin/wpa_supplicant 多幾個 -dddd 提高列印級別
措施3: 在開發者模式下選中 啟動WLAN詳細日誌記錄功能 按鈕
enum {
MSG_EXCESSIVE 【1】, MSG_MSGDUMP 【2】, MSG_DEBUG 【3】, MSG_INFO 【4】, MSG_WARNING 【5】, MSG_ERROR【6】
};
void wpa_msg(void *ctx, int level, const char *fmt, ...)
{
va_list ap;
char *buf;
int buflen;
int len;
char prefix[130];
va_start(ap, fmt);
buflen = vsnprintf(NULL, 0, fmt, ap) + 1;
va_end(ap);
buf = os_malloc(buflen);
if (buf == NULL) {
wpa_printf(MSG_ERROR, "wpa_msg: Failed to allocate message "
"buffer");
return;
}
va_start(ap, fmt);
prefix[0] = '\0';
if (wpa_msg_ifname_cb) {
const char *ifname = wpa_msg_ifname_cb(ctx);
if (ifname) {
int res = os_snprintf(prefix, sizeof(prefix), "%s: ",
ifname);
if (os_snprintf_error(sizeof(prefix), res))
prefix[0] = '\0';
}
}
len = vsnprintf(buf, buflen, fmt, ap);
va_end(ap);
wpa_printf(level, "%s%s", prefix, buf); // 呼叫到此處 把當前 MSG_XXX 傳入
if (wpa_msg_cb)
wpa_msg_cb(ctx, level, WPA_MSG_PER_INTERFACE, buf, len);
bin_clear_free(buf, buflen);
}
void wpa_printf(int level, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
// 如果當前的等級大於 預設等級 列印輸出, 小於預設等級則不輸出
// MSG_DEBUG 【3】小於MSG_INFO 【4】 所以一般不輸出 直接 if(false) 跳過了
if (level >= wpa_debug_level【 MSG_INFO 4】) {
__android_log_vprint(wpa_to_android_level(level),ANDROID_LOG_NAME, fmt, ap);
if (wpa_debug_syslog) {
vsyslog(syslog_priority(level), fmt, ap);
} else {
wpa_debug_print_timestamp();
if (out_file) {
vfprintf(out_file, fmt, ap);
fprintf(out_file, "\n");
} else {
vprintf(fmt, ap);
printf("\n");
}
}
}
va_end(ap);
if (wpa_debug_tracing_file != NULL) {
va_start(ap, fmt);
fprintf(wpa_debug_tracing_file, WPAS_TRACE_PFX, level);
vfprintf(wpa_debug_tracing_file, fmt, ap);
fprintf(wpa_debug_tracing_file, "\n");
fflush(wpa_debug_tracing_file);
va_end(ap);
}
}
static int wpa_to_android_level(int level)
{
if (level == MSG_ERROR)
return ANDROID_LOG_ERROR;
if (level == MSG_WARNING)
return ANDROID_LOG_WARN;
if (level == MSG_INFO)
return ANDROID_LOG_INFO; // MSG_INFO
return ANDROID_LOG_DEBUG; // MSG_DEBUG
}
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
ANDROID_LOG_DEFAULT,
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT,
} android_LogPriority;
相關文章
- log4j日誌列印級別動態調整
- 調整oracle redologOracle Redo
- 調整WebLogic的時間Web
- 列印電子發票調整格式
- mongodb線上調整Oplog Size的值MongoDB
- weblogic 記憶體調整Web記憶體
- log buffer及日誌管理深入分析及效能調整(一)
- log buffer及日誌管理深入分析及效能調整(七)
- log buffer及日誌管理深入分析及效能調整(六)
- log buffer及日誌管理深入分析及效能調整(五)
- log buffer及日誌管理深入分析及效能調整(三)
- Oracle調整redo log日誌大小Oracle
- 分析:關於 「關注後使用者資訊獲取介面」調整的通知
- Weblogic 10.3.6 調整JVM大小的疑問WebJVM
- excel列印虛線怎麼調整 excel表格有虛線列印不完整Excel
- Activity Monitor log儲存時間調整
- Oracle RAC+DG 調整redo/standby log fileOracle
- 【效能調整】等待事件(五)log相關等待事件
- Buffer cache 的調整與優化(二)優化
- Buffer cache 的調整與優化(一)優化
- 關於快速排序中元素調整方法的分析排序
- excel表格列印預覽不完整如何調整 excel表格列印不完整怎麼辦Excel
- Layui+larave-log-view日誌頁面調整UIView
- SQL調整優化與10053跟蹤分析一例SQL優化
- buffer cache深度分析及效能調整(五)
- buffer cache深度分析及效能調整(六)
- buffer cache深度分析及效能調整(四)
- Oracle記憶體分配與調整Oracle記憶體
- Procedure 效能檢測與調整方法
- 夏令時與冬令時:時區的變化與調整
- Weblogic Admin Server , Managed Server記憶體調整WebServer記憶體
- SQL調整優化與10053跟蹤分析一例(zt)SQL優化
- TVM VLOG列印
- 【Logback日誌級別】動態調整Logback的日誌級別
- win10印表機如何調整列印方向_win10調整印表機方向的設定方法Win10
- Shared pool深入分析及效能調整
- 字串的調整II字串
- Java列印所有整數中2的乘方Java