Mirror of the lttng-dev mailing list
 help / color / mirror / Atom feed
From: eeppeliteloop@gmail.com (Philippe Proulx)
Subject: [lttng-dev] String format based events
Date: Thu, 18 Jun 2015 09:43:36 -0400	[thread overview]
Message-ID: <CAB4xu_3pvQTvcKmi28fS8159CSSL_Fr8f_DR+j_CdZEomAkMZg@mail.gmail.com> (raw)
In-Reply-To: <BLU169-W69F0861B21CA9AE09E8C75ABA60@phx.gbl>

On Wed, Jun 17, 2015 at 7:51 PM, Jeffrey Chen <cpthk at hotmail.com> wrote:
> I have a question while reading the lttng documentation. Could anyone answer
> me? Thanks a lot.
>
> It looks like lttng events are all key-value pairs. Like { my_val1 = 10,
> my_val2 = "OK" }. Does lttng supports regular string format based events,
> like Windows ETW. I want a human readable sentences in the event like "My
> CPU usage is 50 , my memory usage is 100". Of course, I know I could
> manually construct the string myself and pass the result in one string down
> to lttng. But, the idea is that, string format is slow. So, Windows ETW does
> the string formatting only when you read the logs.
> For example, if I want to write many "My CPU usage is {0} , my memory usage
> is {1}" to log. Windows ETW does not write this whole string to log. It only
> writes the 2 variable values of this trace to the log, and construct back
> the original string when you are reading the logs.

Hello Jeffrey!

We (EfficiOS) are currently working on such a feature, which involves
changes to all the following projects:

  * CTF (trace format used by LTTng): allow custom user attributes to
    be assigned to types and events in the trace metadata (this is where
    the format string would go)
  * LTTng-UST: add a macro to be used in tracepoint providers to
    assign a format string to a specific event
  * Babeltrace: upgrade the ctf-text plugin so that it takes into
    account the format string of an event, if available, to print it in a
    custom way

We could also think about a tool, or a Babeltrace input plugin perhaps,
which converts the Windows ETW format to CTF; we would need to
parse the format strings and convert them to our own syntax.

The format string syntax we're intending to use is Python's format()
one [1], or at least a subset of its features. It is very flexible and
allows to name fields, modify them, and place them where you
want, e.g.:

"My field is {field}, which is {field:x} in hex, and also: {other_field}"

Replacement fields may also be empty to be position-based:

"My field is {}, and also: {}"

(you would need exactly two fields here).

[1] https://docs.python.org/3/library/string.html#formatstrings

Phil

>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>



      parent reply	other threads:[~2015-06-18 13:43 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-17 23:51 Jeffrey Chen
2015-06-18  7:49 ` Jeffrey Chen
2015-06-18 13:43 ` Philippe Proulx [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAB4xu_3pvQTvcKmi28fS8159CSSL_Fr8f_DR+j_CdZEomAkMZg@mail.gmail.com \
    --to=eeppeliteloop@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox