6464 #endif
6565
6666 #ifndef FC_LOG_POOL_FAIL_RECORD
67- #define FC_LOG_POOL_FAIL_RECORD 0 /**< 序列化日志分配失败是否记录丢失日志长度,需要消耗性能用于空序列化一次 ,个人觉得没必要 */
67+ #define FC_LOG_POOL_FAIL_RECORD 0 /**< 序列化日志内存分配失败是否记录丢失日志长度,需要消耗性能用于空序列化 ,个人觉得没必要 */
6868 #endif
6969
7070 #ifndef FC_LOG_FMT_START
@@ -290,6 +290,7 @@ extern fc_pool_t fc_log_pool; // log组件使用的内存池声明,在fc_log.c
290290#undef fc_log_merge_0
291291
292292#undef fc_log_merge
293+ #undef fc_log_level_record
293294#undef fc_log_format
294295
295296#undef fc_log_error
@@ -330,14 +331,27 @@ extern fc_pool_t fc_log_pool; // log组件使用的内存池声明,在fc_log.c
330331 #define fc_log_merge (...) \
331332 FC_CONNECT2(fc_log_merge_, __PLOOC_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__)
332333
334+ #define fc_log_level_record (_level ) \
335+ do \
336+ { \
337+ if (scope_log_ptr) \
338+ { \
339+ fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
340+ if (SAFE_NAME(log_temp_ptr)->merge) \
341+ SAFE_NAME(log_temp_ptr)->last_level = _level; /* 临时对象实体记录临时等级 */ \
342+ } \
343+ } while (0 );
344+
345+ // 把fc_log_level_record在format中展开,减少一次do...while(0)的开销
333346 #define fc_log_format (text , _level , fmt , ...) \
334347 do \
335348 { \
336349 fc_log_fprintf((fc_log_t *)(scope_log_ptr ? scope_log_ptr : &FC_LOG_OBJ), _level, text "" fmt "" FC_LOG_END, FC_LOG_PREFIX_CONTENT, ##__VA_ARGS__); \
337350 if (scope_log_ptr) \
338351 { \
339352 fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
340- SAFE_NAME(log_temp_ptr)->last_level = FC_LOG_LEVEL_ERROR; /* 临时对象实体记录临时等级 */ \
353+ if (SAFE_NAME(log_temp_ptr)->merge) \
354+ SAFE_NAME(log_temp_ptr)->last_level = _level; /* 临时对象实体记录临时等级 */ \
341355 } \
342356 } while (0 )
343357
@@ -346,75 +360,40 @@ extern fc_pool_t fc_log_pool; // log组件使用的内存池声明,在fc_log.c
346360 #define fc_log_error (fmt , ...) \
347361 fc_log_format(FC_ERROR_TEXT, FC_LOG_LEVEL_ERROR, fmt, ##__VA_ARGS__)
348362 #else
349- #define fc_log_error (fmt , ...) \
350- do \
351- { \
352- if (scope_log_ptr) \
353- { \
354- fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
355- SAFE_NAME(log_temp_ptr)->last_level = FC_LOG_LEVEL_ERROR; /* 临时对象实体记录临时等级 */ \
356- } \
357- } while (0 );
363+ #define fc_log_error (fmt , ...) \
364+ fc_log_level_record(FC_LOG_LEVEL_ERROR)
358365 #endif
359366
360367 #if FC_LOG_FILE_LEVEL >= FC_LOG_LEVEL_WARNING
361368 #define fc_log_warning (fmt , ...) \
362369 fc_log_format(FC_WARNING_TEXT, FC_LOG_LEVEL_WARNING, fmt, ##__VA_ARGS__)
363370 #else
364- #define fc_log_warning (fmt , ...) \
365- do \
366- { \
367- if (scope_log_ptr) \
368- { \
369- fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
370- SAFE_NAME(log_temp_ptr)->last_level = FC_LOG_LEVEL_WARNING; /* 临时对象实体记录临时等级 */ \
371- } \
372- } while (0 );
371+ #define fc_log_warning (fmt , ...) \
372+ fc_log_level_record(FC_LOG_LEVEL_WARNING)
373373 #endif
374374
375375 #if FC_LOG_FILE_LEVEL >= FC_LOG_LEVEL_INFO
376376 #define fc_log_info (fmt , ...) \
377377 fc_log_format(FC_INFO_TEXT, FC_LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
378378 #else
379- #define fc_log_info (fmt , ...) \
380- do \
381- { \
382- if (scope_log_ptr) \
383- { \
384- fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
385- SAFE_NAME(log_temp_ptr)->last_level = FC_LOG_LEVEL_INFO; /* 临时对象实体记录临时等级 */ \
386- } \
387- } while (0 );
379+ #define fc_log_info (fmt , ...) \
380+ fc_log_level_record(FC_LOG_LEVEL_INFO)
388381 #endif
389382
390383 #if FC_LOG_FILE_LEVEL >= FC_LOG_LEVEL_DEBUG
391384 #define fc_log_debug (fmt , ...) \
392385 fc_log_format(FC_DEBUG_TEXT, FC_LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__)
393386 #else
394- #define fc_log_debug (fmt , ...) \
395- do \
396- { \
397- if (scope_log_ptr) \
398- { \
399- fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
400- SAFE_NAME(log_temp_ptr)->last_level = FC_LOG_LEVEL_DEBUG; /* 临时对象实体记录临时等级 */ \
401- } \
402- } while (0 );
387+ #define fc_log_debug (fmt , ...) \
388+ fc_log_level_record(FC_LOG_LEVEL_DEBUG)
403389 #endif
404390
405391 #if FC_LOG_FILE_LEVEL >= FC_LOG_LEVEL_VERBOSE
406392 #define fc_log_verbose (fmt , ...) \
407393 fc_log_format(FC_VERBOSE_TEXT, FC_LOG_LEVEL_VERBOSE, fmt, ##__VA_ARGS__)
408394 #else
409- #define fc_log_verbose (fmt , ...) \
410- do \
411- { \
412- if (scope_log_ptr) \
413- { \
414- fc_log_t *SAFE_NAME(log_temp_ptr) = (fc_log_t *)scope_log_ptr; \
415- SAFE_NAME(log_temp_ptr)->last_level = FC_LOG_LEVEL_VERBOSE; /* 临时对象实体记录临时等级 */ \
416- } \
417- } while (0 );
395+ #define fc_log_verbose (fmt , ...) \
396+ fc_log_level_record(FC_LOG_LEVEL_VERBOSE)
418397 #endif
419398
420399 #define fc_log_printf (fmt , ...) \
@@ -465,7 +444,8 @@ extern fc_pool_t fc_log_pool; // log组件使用的内存池声明,在fc_log.c
465444 #define fc_log_merge (...) // 空定义即可
466445
467446// clang-format off
468-
447+
448+ #define fc_log_level_record (_level ) ((void)0)
469449 #define fc_log_format (text , level , fmt , ...) ((void)0)
470450 #define fc_log_error (fmt , ...) ((void)0)
471451 #define fc_log_warning (fmt , ...) ((void)0)
0 commit comments