* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
@ 2020-06-18 9:07 ` Daniel P. Berrangé
0 siblings, 0 replies; 17+ messages in thread
From: Daniel P. Berrangé @ 2020-06-18 9:07 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: qemu-trivial, qemu-devel
On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > Add a backend that is the same as the log backend but omits the
> > process id and timestamp so logs are easier to read and diff-able.
> >
> > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > ---
> > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > 1 file changed, 48 insertions(+)
> > create mode 100644 scripts/tracetool/backend/plainlog.py
> >
> > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > new file mode 100644
> > index 0000000000..40bbfa6d76
> > --- /dev/null
> > +++ b/scripts/tracetool/backend/plainlog.py
> > @@ -0,0 +1,48 @@
> > +# -*- coding: utf-8 -*-
> > +
> > +"""
> > +Stderr built-in backend, plain log without proc ID and time.
> > +"""
> > +
> > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
>
> There is a Unicode issue here, Lluís' name is not printed correctly.
>
> > +__license__ = "GPL version 2 or (at your option) any later version"
> > +
> > +__maintainer__ = "Stefan Hajnoczi"
> > +__email__ = "stefanha@linux.vnet.ibm.com"
> > +
> > +
> > +from tracetool import out
> > +
> > +
> > +PUBLIC = True
> > +
> > +
> > +def generate_h_begin(events, group):
> > + out('#include "qemu/log-for-trace.h"',
> > + '')
> > +
> > +
> > +def generate_h(event, group):
> > + argnames = ", ".join(event.args.names())
> > + if len(event.args) > 0:
> > + argnames = ", " + argnames
> > +
> > + if "vcpu" in event.properties:
> > + # already checked on the generic format code
> > + cond = "true"
> > + else:
> > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > +
> > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > + ' }',
> > + cond=cond,
> > + name=event.name,
> > + fmt=event.fmt.rstrip("\n"),
> > + argnames=argnames)
>
> It is not necessary to introduce a new backend. There could be an option
> that controls whether or not the timestamp/tid is printed. For example,
> -trace timestamp=off or maybe the timestmap/tid can be integrated into
> qemu_log() itself so that it's used more consistently and a -d timestamp
> option enables it.
QEMU already has a "-msg timestamp=on|off" option that controls whether
error reports on stderr get a timestamp. I think it is probably reasonable
for this existing option to apply to anything QEMU prints to stdout/err,
and thus we could wire it up for qemu_log().
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
2020-06-18 9:07 ` Daniel P. Berrangé
@ 2020-06-18 10:30 ` BALATON Zoltan
-1 siblings, 0 replies; 17+ messages in thread
From: BALATON Zoltan @ 2020-06-18 10:30 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: Stefan Hajnoczi, qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 3460 bytes --]
On Thu, 18 Jun 2020, Daniel P. Berrangé wrote:
> On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
>> On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
>>> Add a backend that is the same as the log backend but omits the
>>> process id and timestamp so logs are easier to read and diff-able.
>>>
>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>> ---
>>> scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
>>> 1 file changed, 48 insertions(+)
>>> create mode 100644 scripts/tracetool/backend/plainlog.py
>>>
>>> diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
>>> new file mode 100644
>>> index 0000000000..40bbfa6d76
>>> --- /dev/null
>>> +++ b/scripts/tracetool/backend/plainlog.py
>>> @@ -0,0 +1,48 @@
>>> +# -*- coding: utf-8 -*-
>>> +
>>> +"""
>>> +Stderr built-in backend, plain log without proc ID and time.
>>> +"""
>>> +
>>> +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
>>> +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
>>
>> There is a Unicode issue here, Lluís' name is not printed correctly.
It's just an issue with the email formatting, should be OK if you read it
in UTF8 which is the default on most machines nowaday just forgot to add
corresponding email header.
>>> +__license__ = "GPL version 2 or (at your option) any later version"
>>> +
>>> +__maintainer__ = "Stefan Hajnoczi"
>>> +__email__ = "stefanha@linux.vnet.ibm.com"
>>> +
>>> +
>>> +from tracetool import out
>>> +
>>> +
>>> +PUBLIC = True
>>> +
>>> +
>>> +def generate_h_begin(events, group):
>>> + out('#include "qemu/log-for-trace.h"',
>>> + '')
>>> +
>>> +
>>> +def generate_h(event, group):
>>> + argnames = ", ".join(event.args.names())
>>> + if len(event.args) > 0:
>>> + argnames = ", " + argnames
>>> +
>>> + if "vcpu" in event.properties:
>>> + # already checked on the generic format code
>>> + cond = "true"
>>> + else:
>>> + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
>>> +
>>> + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
>>> + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
>>> + ' }',
>>> + cond=cond,
>>> + name=event.name,
>>> + fmt=event.fmt.rstrip("\n"),
>>> + argnames=argnames)
>>
>> It is not necessary to introduce a new backend. There could be an option
>> that controls whether or not the timestamp/tid is printed. For example,
>> -trace timestamp=off or maybe the timestmap/tid can be integrated into
>> qemu_log() itself so that it's used more consistently and a -d timestamp
>> option enables it.
>
> QEMU already has a "-msg timestamp=on|off" option that controls whether
> error reports on stderr get a timestamp. I think it is probably reasonable
> for this existing option to apply to anything QEMU prints to stdout/err,
> and thus we could wire it up for qemu_log().
I don't know how to do that so can you submit a patch please? It would be
preferable if an additional command line option wasn't necessary to print
logs without timestamps (so changing the defailt to that if you don't mind
changing current trace behaviour) or the default could be set at configure
time like with this patch --enable-trace-backends=plainlog sets that
(although this does not have option to change it at runtime).
Regards,
BALATON Zoltan
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
@ 2020-06-18 10:30 ` BALATON Zoltan
0 siblings, 0 replies; 17+ messages in thread
From: BALATON Zoltan @ 2020-06-18 10:30 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: qemu-trivial, qemu-devel, Stefan Hajnoczi
[-- Attachment #1: Type: text/plain, Size: 3460 bytes --]
On Thu, 18 Jun 2020, Daniel P. Berrangé wrote:
> On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
>> On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
>>> Add a backend that is the same as the log backend but omits the
>>> process id and timestamp so logs are easier to read and diff-able.
>>>
>>> Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
>>> ---
>>> scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
>>> 1 file changed, 48 insertions(+)
>>> create mode 100644 scripts/tracetool/backend/plainlog.py
>>>
>>> diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
>>> new file mode 100644
>>> index 0000000000..40bbfa6d76
>>> --- /dev/null
>>> +++ b/scripts/tracetool/backend/plainlog.py
>>> @@ -0,0 +1,48 @@
>>> +# -*- coding: utf-8 -*-
>>> +
>>> +"""
>>> +Stderr built-in backend, plain log without proc ID and time.
>>> +"""
>>> +
>>> +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
>>> +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
>>
>> There is a Unicode issue here, Lluís' name is not printed correctly.
It's just an issue with the email formatting, should be OK if you read it
in UTF8 which is the default on most machines nowaday just forgot to add
corresponding email header.
>>> +__license__ = "GPL version 2 or (at your option) any later version"
>>> +
>>> +__maintainer__ = "Stefan Hajnoczi"
>>> +__email__ = "stefanha@linux.vnet.ibm.com"
>>> +
>>> +
>>> +from tracetool import out
>>> +
>>> +
>>> +PUBLIC = True
>>> +
>>> +
>>> +def generate_h_begin(events, group):
>>> + out('#include "qemu/log-for-trace.h"',
>>> + '')
>>> +
>>> +
>>> +def generate_h(event, group):
>>> + argnames = ", ".join(event.args.names())
>>> + if len(event.args) > 0:
>>> + argnames = ", " + argnames
>>> +
>>> + if "vcpu" in event.properties:
>>> + # already checked on the generic format code
>>> + cond = "true"
>>> + else:
>>> + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
>>> +
>>> + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
>>> + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
>>> + ' }',
>>> + cond=cond,
>>> + name=event.name,
>>> + fmt=event.fmt.rstrip("\n"),
>>> + argnames=argnames)
>>
>> It is not necessary to introduce a new backend. There could be an option
>> that controls whether or not the timestamp/tid is printed. For example,
>> -trace timestamp=off or maybe the timestmap/tid can be integrated into
>> qemu_log() itself so that it's used more consistently and a -d timestamp
>> option enables it.
>
> QEMU already has a "-msg timestamp=on|off" option that controls whether
> error reports on stderr get a timestamp. I think it is probably reasonable
> for this existing option to apply to anything QEMU prints to stdout/err,
> and thus we could wire it up for qemu_log().
I don't know how to do that so can you submit a patch please? It would be
preferable if an additional command line option wasn't necessary to print
logs without timestamps (so changing the defailt to that if you don't mind
changing current trace behaviour) or the default could be set at configure
time like with this patch --enable-trace-backends=plainlog sets that
(although this does not have option to change it at runtime).
Regards,
BALATON Zoltan
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
2020-06-18 9:07 ` Daniel P. Berrangé
@ 2020-06-18 15:35 ` Stefan Hajnoczi
-1 siblings, 0 replies; 17+ messages in thread
From: Stefan Hajnoczi @ 2020-06-18 15:35 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: BALATON Zoltan, qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 3235 bytes --]
On Thu, Jun 18, 2020 at 10:07:41AM +0100, Daniel P. Berrangé wrote:
> On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> > On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > > Add a backend that is the same as the log backend but omits the
> > > process id and timestamp so logs are easier to read and diff-able.
> > >
> > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > > ---
> > > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > > 1 file changed, 48 insertions(+)
> > > create mode 100644 scripts/tracetool/backend/plainlog.py
> > >
> > > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > > new file mode 100644
> > > index 0000000000..40bbfa6d76
> > > --- /dev/null
> > > +++ b/scripts/tracetool/backend/plainlog.py
> > > @@ -0,0 +1,48 @@
> > > +# -*- coding: utf-8 -*-
> > > +
> > > +"""
> > > +Stderr built-in backend, plain log without proc ID and time.
> > > +"""
> > > +
> > > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
> >
> > There is a Unicode issue here, Lluís' name is not printed correctly.
> >
> > > +__license__ = "GPL version 2 or (at your option) any later version"
> > > +
> > > +__maintainer__ = "Stefan Hajnoczi"
> > > +__email__ = "stefanha@linux.vnet.ibm.com"
> > > +
> > > +
> > > +from tracetool import out
> > > +
> > > +
> > > +PUBLIC = True
> > > +
> > > +
> > > +def generate_h_begin(events, group):
> > > + out('#include "qemu/log-for-trace.h"',
> > > + '')
> > > +
> > > +
> > > +def generate_h(event, group):
> > > + argnames = ", ".join(event.args.names())
> > > + if len(event.args) > 0:
> > > + argnames = ", " + argnames
> > > +
> > > + if "vcpu" in event.properties:
> > > + # already checked on the generic format code
> > > + cond = "true"
> > > + else:
> > > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > > +
> > > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > > + ' }',
> > > + cond=cond,
> > > + name=event.name,
> > > + fmt=event.fmt.rstrip("\n"),
> > > + argnames=argnames)
> >
> > It is not necessary to introduce a new backend. There could be an option
> > that controls whether or not the timestamp/tid is printed. For example,
> > -trace timestamp=off or maybe the timestmap/tid can be integrated into
> > qemu_log() itself so that it's used more consistently and a -d timestamp
> > option enables it.
>
> QEMU already has a "-msg timestamp=on|off" option that controls whether
> error reports on stderr get a timestamp. I think it is probably reasonable
> for this existing option to apply to anything QEMU prints to stdout/err,
> and thus we could wire it up for qemu_log().
I thought about that but the features are somewhat unrelated.
If we unify them, how about making the timestamp/tid apply to *all*
qemu_log() output, not just tracing?
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
@ 2020-06-18 15:35 ` Stefan Hajnoczi
0 siblings, 0 replies; 17+ messages in thread
From: Stefan Hajnoczi @ 2020-06-18 15:35 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 3235 bytes --]
On Thu, Jun 18, 2020 at 10:07:41AM +0100, Daniel P. Berrangé wrote:
> On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> > On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > > Add a backend that is the same as the log backend but omits the
> > > process id and timestamp so logs are easier to read and diff-able.
> > >
> > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > > ---
> > > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > > 1 file changed, 48 insertions(+)
> > > create mode 100644 scripts/tracetool/backend/plainlog.py
> > >
> > > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > > new file mode 100644
> > > index 0000000000..40bbfa6d76
> > > --- /dev/null
> > > +++ b/scripts/tracetool/backend/plainlog.py
> > > @@ -0,0 +1,48 @@
> > > +# -*- coding: utf-8 -*-
> > > +
> > > +"""
> > > +Stderr built-in backend, plain log without proc ID and time.
> > > +"""
> > > +
> > > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
> >
> > There is a Unicode issue here, Lluís' name is not printed correctly.
> >
> > > +__license__ = "GPL version 2 or (at your option) any later version"
> > > +
> > > +__maintainer__ = "Stefan Hajnoczi"
> > > +__email__ = "stefanha@linux.vnet.ibm.com"
> > > +
> > > +
> > > +from tracetool import out
> > > +
> > > +
> > > +PUBLIC = True
> > > +
> > > +
> > > +def generate_h_begin(events, group):
> > > + out('#include "qemu/log-for-trace.h"',
> > > + '')
> > > +
> > > +
> > > +def generate_h(event, group):
> > > + argnames = ", ".join(event.args.names())
> > > + if len(event.args) > 0:
> > > + argnames = ", " + argnames
> > > +
> > > + if "vcpu" in event.properties:
> > > + # already checked on the generic format code
> > > + cond = "true"
> > > + else:
> > > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > > +
> > > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > > + ' }',
> > > + cond=cond,
> > > + name=event.name,
> > > + fmt=event.fmt.rstrip("\n"),
> > > + argnames=argnames)
> >
> > It is not necessary to introduce a new backend. There could be an option
> > that controls whether or not the timestamp/tid is printed. For example,
> > -trace timestamp=off or maybe the timestmap/tid can be integrated into
> > qemu_log() itself so that it's used more consistently and a -d timestamp
> > option enables it.
>
> QEMU already has a "-msg timestamp=on|off" option that controls whether
> error reports on stderr get a timestamp. I think it is probably reasonable
> for this existing option to apply to anything QEMU prints to stdout/err,
> and thus we could wire it up for qemu_log().
I thought about that but the features are somewhat unrelated.
If we unify them, how about making the timestamp/tid apply to *all*
qemu_log() output, not just tracing?
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
2020-06-18 15:35 ` Stefan Hajnoczi
@ 2020-06-18 15:43 ` Daniel P. Berrangé
-1 siblings, 0 replies; 17+ messages in thread
From: Daniel P. Berrangé @ 2020-06-18 15:43 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: BALATON Zoltan, qemu-trivial, qemu-devel
On Thu, Jun 18, 2020 at 04:35:16PM +0100, Stefan Hajnoczi wrote:
> On Thu, Jun 18, 2020 at 10:07:41AM +0100, Daniel P. Berrangé wrote:
> > On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> > > On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > > > Add a backend that is the same as the log backend but omits the
> > > > process id and timestamp so logs are easier to read and diff-able.
> > > >
> > > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > > > ---
> > > > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > > > 1 file changed, 48 insertions(+)
> > > > create mode 100644 scripts/tracetool/backend/plainlog.py
> > > >
> > > > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > > > new file mode 100644
> > > > index 0000000000..40bbfa6d76
> > > > --- /dev/null
> > > > +++ b/scripts/tracetool/backend/plainlog.py
> > > > @@ -0,0 +1,48 @@
> > > > +# -*- coding: utf-8 -*-
> > > > +
> > > > +"""
> > > > +Stderr built-in backend, plain log without proc ID and time.
> > > > +"""
> > > > +
> > > > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
> > >
> > > There is a Unicode issue here, Lluís' name is not printed correctly.
> > >
> > > > +__license__ = "GPL version 2 or (at your option) any later version"
> > > > +
> > > > +__maintainer__ = "Stefan Hajnoczi"
> > > > +__email__ = "stefanha@linux.vnet.ibm.com"
> > > > +
> > > > +
> > > > +from tracetool import out
> > > > +
> > > > +
> > > > +PUBLIC = True
> > > > +
> > > > +
> > > > +def generate_h_begin(events, group):
> > > > + out('#include "qemu/log-for-trace.h"',
> > > > + '')
> > > > +
> > > > +
> > > > +def generate_h(event, group):
> > > > + argnames = ", ".join(event.args.names())
> > > > + if len(event.args) > 0:
> > > > + argnames = ", " + argnames
> > > > +
> > > > + if "vcpu" in event.properties:
> > > > + # already checked on the generic format code
> > > > + cond = "true"
> > > > + else:
> > > > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > > > +
> > > > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > > > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > > > + ' }',
> > > > + cond=cond,
> > > > + name=event.name,
> > > > + fmt=event.fmt.rstrip("\n"),
> > > > + argnames=argnames)
> > >
> > > It is not necessary to introduce a new backend. There could be an option
> > > that controls whether or not the timestamp/tid is printed. For example,
> > > -trace timestamp=off or maybe the timestmap/tid can be integrated into
> > > qemu_log() itself so that it's used more consistently and a -d timestamp
> > > option enables it.
> >
> > QEMU already has a "-msg timestamp=on|off" option that controls whether
> > error reports on stderr get a timestamp. I think it is probably reasonable
> > for this existing option to apply to anything QEMU prints to stdout/err,
> > and thus we could wire it up for qemu_log().
>
> I thought about that but the features are somewhat unrelated.
>
> If we unify them, how about making the timestamp/tid apply to *all*
> qemu_log() output, not just tracing?
That's exactly what I intended.
Essentially if QEMU is going to add timestamps to things it writes to
stdout/err, then it should do that universally for all parts of the code
base that use stdio. This means error_report(), qemu_log(), and any
other places that are relevant wrt stdio.
Having separate timestamp on/off switches for each feature is not
desirable.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
@ 2020-06-18 15:43 ` Daniel P. Berrangé
0 siblings, 0 replies; 17+ messages in thread
From: Daniel P. Berrangé @ 2020-06-18 15:43 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: qemu-trivial, qemu-devel
On Thu, Jun 18, 2020 at 04:35:16PM +0100, Stefan Hajnoczi wrote:
> On Thu, Jun 18, 2020 at 10:07:41AM +0100, Daniel P. Berrangé wrote:
> > On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> > > On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > > > Add a backend that is the same as the log backend but omits the
> > > > process id and timestamp so logs are easier to read and diff-able.
> > > >
> > > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > > > ---
> > > > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > > > 1 file changed, 48 insertions(+)
> > > > create mode 100644 scripts/tracetool/backend/plainlog.py
> > > >
> > > > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > > > new file mode 100644
> > > > index 0000000000..40bbfa6d76
> > > > --- /dev/null
> > > > +++ b/scripts/tracetool/backend/plainlog.py
> > > > @@ -0,0 +1,48 @@
> > > > +# -*- coding: utf-8 -*-
> > > > +
> > > > +"""
> > > > +Stderr built-in backend, plain log without proc ID and time.
> > > > +"""
> > > > +
> > > > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
> > >
> > > There is a Unicode issue here, Lluís' name is not printed correctly.
> > >
> > > > +__license__ = "GPL version 2 or (at your option) any later version"
> > > > +
> > > > +__maintainer__ = "Stefan Hajnoczi"
> > > > +__email__ = "stefanha@linux.vnet.ibm.com"
> > > > +
> > > > +
> > > > +from tracetool import out
> > > > +
> > > > +
> > > > +PUBLIC = True
> > > > +
> > > > +
> > > > +def generate_h_begin(events, group):
> > > > + out('#include "qemu/log-for-trace.h"',
> > > > + '')
> > > > +
> > > > +
> > > > +def generate_h(event, group):
> > > > + argnames = ", ".join(event.args.names())
> > > > + if len(event.args) > 0:
> > > > + argnames = ", " + argnames
> > > > +
> > > > + if "vcpu" in event.properties:
> > > > + # already checked on the generic format code
> > > > + cond = "true"
> > > > + else:
> > > > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > > > +
> > > > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > > > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > > > + ' }',
> > > > + cond=cond,
> > > > + name=event.name,
> > > > + fmt=event.fmt.rstrip("\n"),
> > > > + argnames=argnames)
> > >
> > > It is not necessary to introduce a new backend. There could be an option
> > > that controls whether or not the timestamp/tid is printed. For example,
> > > -trace timestamp=off or maybe the timestmap/tid can be integrated into
> > > qemu_log() itself so that it's used more consistently and a -d timestamp
> > > option enables it.
> >
> > QEMU already has a "-msg timestamp=on|off" option that controls whether
> > error reports on stderr get a timestamp. I think it is probably reasonable
> > for this existing option to apply to anything QEMU prints to stdout/err,
> > and thus we could wire it up for qemu_log().
>
> I thought about that but the features are somewhat unrelated.
>
> If we unify them, how about making the timestamp/tid apply to *all*
> qemu_log() output, not just tracing?
That's exactly what I intended.
Essentially if QEMU is going to add timestamps to things it writes to
stdout/err, then it should do that universally for all parts of the code
base that use stdio. This means error_report(), qemu_log(), and any
other places that are relevant wrt stdio.
Having separate timestamp on/off switches for each feature is not
desirable.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
2020-06-18 15:43 ` Daniel P. Berrangé
@ 2020-06-23 14:47 ` Stefan Hajnoczi
-1 siblings, 0 replies; 17+ messages in thread
From: Stefan Hajnoczi @ 2020-06-23 14:47 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: Stefan Hajnoczi, qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 4142 bytes --]
On Thu, Jun 18, 2020 at 04:43:23PM +0100, Daniel P. Berrangé wrote:
> On Thu, Jun 18, 2020 at 04:35:16PM +0100, Stefan Hajnoczi wrote:
> > On Thu, Jun 18, 2020 at 10:07:41AM +0100, Daniel P. Berrangé wrote:
> > > On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> > > > On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > > > > Add a backend that is the same as the log backend but omits the
> > > > > process id and timestamp so logs are easier to read and diff-able.
> > > > >
> > > > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > > > > ---
> > > > > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > > > > 1 file changed, 48 insertions(+)
> > > > > create mode 100644 scripts/tracetool/backend/plainlog.py
> > > > >
> > > > > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > > > > new file mode 100644
> > > > > index 0000000000..40bbfa6d76
> > > > > --- /dev/null
> > > > > +++ b/scripts/tracetool/backend/plainlog.py
> > > > > @@ -0,0 +1,48 @@
> > > > > +# -*- coding: utf-8 -*-
> > > > > +
> > > > > +"""
> > > > > +Stderr built-in backend, plain log without proc ID and time.
> > > > > +"""
> > > > > +
> > > > > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > > > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > >
> > > > There is a Unicode issue here, Lluís' name is not printed correctly.
> > > >
> > > > > +__license__ = "GPL version 2 or (at your option) any later version"
> > > > > +
> > > > > +__maintainer__ = "Stefan Hajnoczi"
> > > > > +__email__ = "stefanha@linux.vnet.ibm.com"
> > > > > +
> > > > > +
> > > > > +from tracetool import out
> > > > > +
> > > > > +
> > > > > +PUBLIC = True
> > > > > +
> > > > > +
> > > > > +def generate_h_begin(events, group):
> > > > > + out('#include "qemu/log-for-trace.h"',
> > > > > + '')
> > > > > +
> > > > > +
> > > > > +def generate_h(event, group):
> > > > > + argnames = ", ".join(event.args.names())
> > > > > + if len(event.args) > 0:
> > > > > + argnames = ", " + argnames
> > > > > +
> > > > > + if "vcpu" in event.properties:
> > > > > + # already checked on the generic format code
> > > > > + cond = "true"
> > > > > + else:
> > > > > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > > > > +
> > > > > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > > > > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > > > > + ' }',
> > > > > + cond=cond,
> > > > > + name=event.name,
> > > > > + fmt=event.fmt.rstrip("\n"),
> > > > > + argnames=argnames)
> > > >
> > > > It is not necessary to introduce a new backend. There could be an option
> > > > that controls whether or not the timestamp/tid is printed. For example,
> > > > -trace timestamp=off or maybe the timestmap/tid can be integrated into
> > > > qemu_log() itself so that it's used more consistently and a -d timestamp
> > > > option enables it.
> > >
> > > QEMU already has a "-msg timestamp=on|off" option that controls whether
> > > error reports on stderr get a timestamp. I think it is probably reasonable
> > > for this existing option to apply to anything QEMU prints to stdout/err,
> > > and thus we could wire it up for qemu_log().
> >
> > I thought about that but the features are somewhat unrelated.
> >
> > If we unify them, how about making the timestamp/tid apply to *all*
> > qemu_log() output, not just tracing?
>
> That's exactly what I intended.
>
> Essentially if QEMU is going to add timestamps to things it writes to
> stdout/err, then it should do that universally for all parts of the code
> base that use stdio. This means error_report(), qemu_log(), and any
> other places that are relevant wrt stdio.
>
> Having separate timestamp on/off switches for each feature is not
> desirable.
Okay. I'll take a look at this tomorrow.
Thanks!
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH 2/2] scripts/tracetool: Add plainlog backend
@ 2020-06-23 14:47 ` Stefan Hajnoczi
0 siblings, 0 replies; 17+ messages in thread
From: Stefan Hajnoczi @ 2020-06-23 14:47 UTC (permalink / raw)
To: Daniel P. Berrangé; +Cc: qemu-trivial, qemu-devel, Stefan Hajnoczi
[-- Attachment #1: Type: text/plain, Size: 4142 bytes --]
On Thu, Jun 18, 2020 at 04:43:23PM +0100, Daniel P. Berrangé wrote:
> On Thu, Jun 18, 2020 at 04:35:16PM +0100, Stefan Hajnoczi wrote:
> > On Thu, Jun 18, 2020 at 10:07:41AM +0100, Daniel P. Berrangé wrote:
> > > On Thu, Jun 18, 2020 at 08:31:24AM +0100, Stefan Hajnoczi wrote:
> > > > On Wed, Jun 17, 2020 at 03:36:29PM +0200, BALATON Zoltan wrote:
> > > > > Add a backend that is the same as the log backend but omits the
> > > > > process id and timestamp so logs are easier to read and diff-able.
> > > > >
> > > > > Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu>
> > > > > ---
> > > > > scripts/tracetool/backend/plainlog.py | 48 +++++++++++++++++++++++++++
> > > > > 1 file changed, 48 insertions(+)
> > > > > create mode 100644 scripts/tracetool/backend/plainlog.py
> > > > >
> > > > > diff --git a/scripts/tracetool/backend/plainlog.py b/scripts/tracetool/backend/plainlog.py
> > > > > new file mode 100644
> > > > > index 0000000000..40bbfa6d76
> > > > > --- /dev/null
> > > > > +++ b/scripts/tracetool/backend/plainlog.py
> > > > > @@ -0,0 +1,48 @@
> > > > > +# -*- coding: utf-8 -*-
> > > > > +
> > > > > +"""
> > > > > +Stderr built-in backend, plain log without proc ID and time.
> > > > > +"""
> > > > > +
> > > > > +__author__ = "Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > > > +__copyright__ = "Copyright 2012-2017, Llu????s Vilanova <vilanova@ac.upc.edu>"
> > > >
> > > > There is a Unicode issue here, Lluís' name is not printed correctly.
> > > >
> > > > > +__license__ = "GPL version 2 or (at your option) any later version"
> > > > > +
> > > > > +__maintainer__ = "Stefan Hajnoczi"
> > > > > +__email__ = "stefanha@linux.vnet.ibm.com"
> > > > > +
> > > > > +
> > > > > +from tracetool import out
> > > > > +
> > > > > +
> > > > > +PUBLIC = True
> > > > > +
> > > > > +
> > > > > +def generate_h_begin(events, group):
> > > > > + out('#include "qemu/log-for-trace.h"',
> > > > > + '')
> > > > > +
> > > > > +
> > > > > +def generate_h(event, group):
> > > > > + argnames = ", ".join(event.args.names())
> > > > > + if len(event.args) > 0:
> > > > > + argnames = ", " + argnames
> > > > > +
> > > > > + if "vcpu" in event.properties:
> > > > > + # already checked on the generic format code
> > > > > + cond = "true"
> > > > > + else:
> > > > > + cond = "trace_event_get_state(%s)" % ("TRACE_" + event.name.upper())
> > > > > +
> > > > > + out(' if (%(cond)s && qemu_loglevel_mask(LOG_TRACE)) {',
> > > > > + ' qemu_log("%(name)s " %(fmt)s "\\n" %(argnames)s);',
> > > > > + ' }',
> > > > > + cond=cond,
> > > > > + name=event.name,
> > > > > + fmt=event.fmt.rstrip("\n"),
> > > > > + argnames=argnames)
> > > >
> > > > It is not necessary to introduce a new backend. There could be an option
> > > > that controls whether or not the timestamp/tid is printed. For example,
> > > > -trace timestamp=off or maybe the timestmap/tid can be integrated into
> > > > qemu_log() itself so that it's used more consistently and a -d timestamp
> > > > option enables it.
> > >
> > > QEMU already has a "-msg timestamp=on|off" option that controls whether
> > > error reports on stderr get a timestamp. I think it is probably reasonable
> > > for this existing option to apply to anything QEMU prints to stdout/err,
> > > and thus we could wire it up for qemu_log().
> >
> > I thought about that but the features are somewhat unrelated.
> >
> > If we unify them, how about making the timestamp/tid apply to *all*
> > qemu_log() output, not just tracing?
>
> That's exactly what I intended.
>
> Essentially if QEMU is going to add timestamps to things it writes to
> stdout/err, then it should do that universally for all parts of the code
> base that use stdio. This means error_report(), qemu_log(), and any
> other places that are relevant wrt stdio.
>
> Having separate timestamp on/off switches for each feature is not
> desirable.
Okay. I'll take a look at this tomorrow.
Thanks!
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread