Ticket #3382: log.patch

File log.patch, 2.9 KB (added by abc123, 12 years ago)

example patch to add log level to message

  • libavutil/log.c

    old new  
    176176    return avc->category + 16;
    177177}
    178178
     179static const char *get_level_name(int level){
     180    switch (level) {
     181    case AV_LOG_DEBUG:
     182        return "DEBUG";
     183    case AV_LOG_VERBOSE:
     184        return "VERBOSE";
     185    case AV_LOG_INFO:
     186        return "INFO";
     187    case AV_LOG_WARNING:
     188        return "WARNING";
     189    case AV_LOG_ERROR:
     190        return "ERROR";
     191    case AV_LOG_FATAL:
     192        return "FATAL";
     193    default:
     194        return "N/A";
     195    }
     196}
     197
    179198static void format_line(void *ptr, int level, const char *fmt, va_list vl,
    180199                        AVBPrint part[3], int *print_prefix, int type[2])
    181200{
    182201    AVClass* avc = ptr ? *(AVClass **) ptr : NULL;
    183202    av_bprint_init(part+0, 0, 1);
    184203    av_bprint_init(part+1, 0, 1);
    185     av_bprint_init(part+2, 0, 65536);
     204    av_bprint_init(part+2, 0, 1);
     205    av_bprint_init(part+3, 0, 65536);
    186206
    187207    if(type) type[0] = type[1] = AV_CLASS_CATEGORY_NA + 16;
    188208    if (*print_prefix && avc) {
     
    198218        av_bprintf(part+1, "[%s @ %p] ",
    199219                 avc->item_name(ptr), ptr);
    200220        if(type) type[1] = get_category(ptr);
     221
     222        av_bprintf(part+2, "[%s] ", get_level_name(level));
    201223    }
    202224
    203     av_vbprintf(part+2, fmt, vl);
     225    av_vbprintf(part+3, fmt, vl);
    204226
    205227    if(*part[0].str || *part[1].str || *part[2].str) {
    206228        char lastc = part[2].len && part[2].len <= part[2].size ? part[2].str[part[2].len - 1] : 0;
     
    211233void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
    212234                        char *line, int line_size, int *print_prefix)
    213235{
    214     AVBPrint part[3];
     236    AVBPrint part[4];
    215237    format_line(ptr, level, fmt, vl, part, print_prefix, NULL);
    216     snprintf(line, line_size, "%s%s%s", part[0].str, part[1].str, part[2].str);
    217     av_bprint_finalize(part+2, NULL);
     238    snprintf(line, line_size, "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str);
     239    av_bprint_finalize(part+3, NULL);
    218240}
    219241
    220242void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl)
     
    222244    static int print_prefix = 1;
    223245    static int count;
    224246    static char prev[LINE_SZ];
    225     AVBPrint part[3];
     247    AVBPrint part[4];
    226248    char line[LINE_SZ];
    227249    static int is_atty;
    228250    int type[2];
     
    234256#endif
    235257
    236258    format_line(ptr, level, fmt, vl, part, &print_prefix, type);
    237     snprintf(line, sizeof(line), "%s%s%s", part[0].str, part[1].str, part[2].str);
     259    snprintf(line, sizeof(line), "%s%s%s%s", part[0].str, part[1].str, part[2].str, part[3].str);
    238260
    239261#if HAVE_ISATTY
    240262    if (!is_atty)
     
    259281    colored_fputs(type[1], part[1].str);
    260282    sanitize(part[2].str);
    261283    colored_fputs(av_clip(level >> 3, 0, 6), part[2].str);
     284    sanitize(part[3].str);
     285    colored_fputs(av_clip(level >> 3, 0, 6), part[3].str);
    262286end:
    263287    av_bprint_finalize(part+2, NULL);
    264288#if HAVE_PTHREADS