[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/2] util/log: add timestamp to logs via qemu_log()
From: |
Dongli Zhang |
Subject: |
Re: [PATCH 2/2] util/log: add timestamp to logs via qemu_log() |
Date: |
Wed, 31 Aug 2022 21:17:11 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 |
Hi Markus and Richard,
Thank you very much for the feedback. I agree this is not a good solution. I
will look for alternatives to add timestamp.
Thank you very much!
Dongli Zhang
On 8/30/22 8:31 AM, Richard Henderson wrote:
> On 8/30/22 04:09, Markus Armbruster wrote:
>> Dongli Zhang <dongli.zhang@oracle.com> writes:
>>
>>> The qemu_log is very helpful for diagnostic. Add the timestamp to the log
>>> when it is enabled (e.g., "-msg timestamp=on").
>>>
>>> While there are many other places that may print to log file, this patch is
>>> only for qemu_log(), e.g., the developer may add qemu_log/qemu_log_mask to
>>> selected locations to diagnose QEMU issue.
>>
>> Opinions on the new feature, anyone?
>>
>>> Cc: Joe Jin <joe.jin@oracle.com>
>>> Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
>>> ---
>>> Please let me know if we should use 'error_with_guestname' as well.
>>>
>>> util/log.c | 7 +++++++
>>> 1 file changed, 7 insertions(+)
>>>
>>> diff --git a/util/log.c b/util/log.c
>>> index d6eb037..f0a081a 100644
>>> --- a/util/log.c
>>> +++ b/util/log.c
>>> @@ -129,8 +129,15 @@ void qemu_log(const char *fmt, ...)
>>> {
>>> FILE *f = qemu_log_trylock();
>>> if (f) {
>>> + gchar *timestr;
>>> va_list ap;
>>> + if (message_with_timestamp) {
>>> + timestr = real_time_iso8601();
>>> + fprintf(f, "%s ", timestr);
>>> + g_free(timestr);
>>> + }
>>> +
>>> va_start(ap, fmt);
>>> vfprintf(f, fmt, ap);
>>> va_end(ap);
>>
>> This extends -msg timestamp=on to apply to log messages without
>> documenting it in -help or anywhere else. Needs fixing.
>
> I think this is a poor place to add the timestamp.
>
> You'll find that qemu_log is used many times to assemble pieces, e.g.
>
> linux-user/thunk.c:360: qemu_log("%" PRIu64, tswap64(val));
>
> linux-user/thunk.c:376: qemu_log("\"");
>
> linux-user/thunk.c:379: qemu_log("[");
>
> linux-user/thunk.c:384: qemu_log(",");
>
> linux-user/thunk.c:391: qemu_log("\"");
>
> linux-user/thunk.c:393: qemu_log("]");
>
> linux-user/thunk.c:417: qemu_log("{");
>
> linux-user/thunk.c:420: qemu_log(",");
>
> linux-user/thunk.c:424: qemu_log("}");
>
>
> Not the best idea, really, but the replacement for this is to avoid qemu_log
> entirely, and use
>
> f = qemu_log_trylock();
> if (f) {
> fprintf
> some
> stuff
> qemu_log_unlock(f);
> }
>
> at which point you don't get your timestamp either. You'd need to explicitly
> add timestamps to individual locations.
>
> It would probably be easier to add timestamps to tracepoints, which are always
> emitted as a unit.
>
>
> r~
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 2/2] util/log: add timestamp to logs via qemu_log(),
Dongli Zhang <=