[FFmpeg-devel] [PATCH] cmdutils: add log time info into report log file

Tobias Rapp t.rapp at noa-archive.com
Tue Jun 6 12:42:10 EEST 2017


On 03.06.2017 08:41, Steven Liu wrote:
> 2017-06-03 0:30 GMT+08:00 Nicolas George <george at nsup.org>:
>>
>> Le quintidi 15 prairial, an CCXXV, Steven Liu a écrit :
>>> add time info into every line of log report
>>> the time info can be used to find out error message occur time.
>>>
>>> Signed-off-by: Steven Liu <lingjiujianke at gmail.com>
>>> ---
>>>  cmdutils.c | 8 +++++++-
>>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/cmdutils.c b/cmdutils.c
>>> index 3d428f3eea..b760a0565d 100644
>>> --- a/cmdutils.c
>>> +++ b/cmdutils.c
>>> @@ -47,6 +47,7 @@
>>>  #include "libavutil/libm.h"
>>>  #include "libavutil/parseutils.h"
>>>  #include "libavutil/pixdesc.h"
>>> +#include "libavutil/time.h"
>>>  #include "libavutil/eval.h"
>>>  #include "libavutil/dict.h"
>>>  #include "libavutil/opt.h"
>>> @@ -103,6 +104,8 @@ void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
>>>  static void log_callback_report(void *ptr, int level, const char *fmt, va_list vl)
>>>  {
>>>      va_list vl2;
>>> +    char *tmp_string = NULL;
>>> +    char time_value[32];
>>>      char line[1024];
>>>      static int print_prefix = 1;
>>>
>>> @@ -111,7 +114,10 @@ static void log_callback_report(void *ptr, int level, const char *fmt, va_list v
>>>      av_log_format_line(ptr, level, fmt, vl2, line, sizeof(line), &print_prefix);
>>>      va_end(vl2);
>>>      if (report_file_level >= level) {
>>> -        fputs(line, report_file);
>>
>>> +        snprintf(time_value, sizeof(time_value), "\n[%"PRId64"] - ", av_gettime());
>>> +        tmp_string = av_strireplace(line, "\n", time_value);
>>
>> It looks like you are printing the time of a line at the beginning of
>> the next line. Or am I missing something.
>>
>> Also, I do not like the dynamic alloc in this function, especially since
>> the same task can be done without: find \n, print the time and the
>> single line, loop.
>>
>>> +        fputs(tmp_string, report_file);
>>> +        av_free(tmp_string);
>>>          fflush(report_file);
>>>      }
>>>  }
>>
>> Regards,
>
> Hi Nicolas,
>
>     I get some problem of the log output:
>
>     1. the log output by multiple av_log to one line,
>          for example:
>              av_log(NULL, "major_brand     :");
>              av_log(NULL, "isom\n");
>          then if add the time to the line head, it will output looks like this:
>              [1496470846077636] -     major_brand     :
> [1496470846077643] - isom[1496470846077650] -
>
>      2. but if add the time to the end of line, it maybe need control
> right alignment
>
>      3. maybe the better solution is add the time into line head when
> the log level big than AV_LOG_WARNING ?
>

Maybe you could use the existing "print_prefix" flag to check whether a 
timestamp prefix shall be added?

And it would be good if the timestamp prefix would be made optional 
similar to the AV_LOG_PRINT_LEVEL flag.

Regards,
Tobias



More information about the ffmpeg-devel mailing list