<div dir="ltr"><div><div>Giving this a bit more thought; I'm slightly more inclined on merely adding the JSON formatter option to the standard oslo.log configuration options.<br><br></div>This is because we right now have the ability to pass oslo.cfg options via the CLI, and we would loose that with the advanced logging configuration file. The aforementioned option is something that we're using for containerized openstack services.<br><br></div>I'll look into adding the ability to turn that handler on/off from oslo.log.<br><br><br><div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 6, 2017 at 8:34 AM, Juan Antonio Osorio <span dir="ltr"><<a href="mailto:jaosorior@gmail.com" target="_blank">jaosorior@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_8215468091522027800h5">On Mon, Nov 6, 2017 at 8:04 AM, Cédric Jeanneret <span dir="ltr"><<a href="mailto:cedric.jeanneret@camptocamp.com" target="_blank">cedric.jeanneret@camptocamp.c<wbr>om</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="m_8215468091522027800m_-4599928909074521674gmail-HOEnZb"><div class="m_8215468091522027800m_-4599928909074521674gmail-h5">On 11/04/2017 07:08 AM, Doug Hellmann wrote:<br>
> Excerpts from Juan Antonio Osorio's message of 2017-11-04 00:11:47 +0200:<br>
>>> On 3 Nov 2017 19:59, "Doug Hellmann" <<a href="mailto:doug@doughellmann.com" target="_blank">doug@doughellmann.com</a>> wrote:<br>
>>><br>
>>> Excerpts from Cédric Jeanneret's message of 2017-11-01 14:54:34 +0100:<br>
>>>> Dear Stackers,<br>
>>>><br>
>>>> While working on my locally deployed Openstack (Pike using TripleO), I<br>
>>>> was a bit struggling with the logging part. Currently, all logs are<br>
>>>> pushed to per-service files, in the standard format "one line per<br>
>>>> entry", plain flat text.<br>
>>>><br>
>>>> It's nice, but if one is wanting to push and index those logs in an ELK,<br>
>>>> the current, default format isn't really good.<br>
>>>><br>
>>>> After some discussions about oslo.log, it appears it provides a nice<br>
>>>> JSONFormatter handler¹ one might want to use for each (python) service<br>
>>>> using oslo central library.<br>
>>>><br>
>>>> A JSON format is really cool, as it's easy to parse for machines, and it<br>
>>>> can be on a multi-line without any bit issue - this is especially<br>
>>>> important for stack traces, as their output is multi-line without real<br>
>>>> way to have a common delimiter so that we can re-format it and feed it<br>
>>>> to any log parser (logstash, fluentd, …).<br>
>>>><br>
>>>> After some more talks, olso.log will not provide a unified interface in<br>
>>>> order to output all received logs as JSON - this makes sens, as that<br>
>>>> would mean "rewrite almost all the python logging management<br>
>>>> interface"², and that's pretty useless, since (all?) services have their<br>
>>>> own "logging.conf" file.<br>
>>>><br>
>>>> That said… to the main purpose of that mail:<br>
>>>><br>
>>>> - Default format for logs<br>
>>>> A first question would be "are we all OK with the default output format"<br>
>>>> - I'm pretty sure "humans" are happy with that, as it's really<br>
>>>> convenient to read and grep. But on a "standard" Openstack deploy, I'm<br>
>>>> pretty sure one does not have only one controller, one ceph node and one<br>
>>>> compute. Hence comes the log centralization, and with that, the log<br>
>>>> indexation and treatments.<br>
>>>><br>
>>>> For that, one might argue "I'm using plain files on my logger, and<br>
>>>> grep-ing -r in them". That's a way to do things, and for that, plain,<br>
>>>> flat logs are great.<br>
>>>><br>
>>>> But… I'm pretty sure I'm not the only one wanting to use some kind of<br>
>>>> ELK cluster for that kind of purpose. So the right question is: what<br>
>>>> about switching the default log format to JSON? On my part, I don't see<br>
>>>> "cons", only "pros", but my judgment is of course biased, as I'm "alone<br>
>>>> in my corner". But what about you, Community?<br>
>>>><br>
>>>> - Provide a way to configure the output format/handler<br>
>>>> While poking around in the puppet modules code, I didn't find any way to<br>
>>>> set the output handler for the logs. For example, in puppet-nova³ we can<br>
>>>> set a lot of things, but not the useful handler for the output.<br>
>>>><br>
>>>> It would be really cool to get, for each puppet module, the capability<br>
>>>> to set the handler so that one can just push some stuff in hiera, and<br>
>>>> Voilà, we have JSON logs.<br>
>>>><br>
>>>> Doing so would allow people to chose between the default  (current)<br>
>>>> output, and something more "computable".<br>
>>><br>
>>> Using the JSON formatter currently requires setting a logging<br>
>>> configuration file using the standard library configuration format<br>
>>> and fully specifying things like log levels, handlers, and output<br>
>>> destination. Would it make sense to add an option in oslo.log to<br>
>>> give deployers an easier way to enable the JSON formatter?<br>
>>><br>
>><br>
>> This would actually be very useful.<br>
><br>
> Great! Let me know if you would like to help figuring out where to do<br>
> that in the library code.<br>
<br>
</div></div>There's already some (not really documented) feature allowing oslo.log<br>
to load a configuration file. In fact, there's already one existing in<br>
the keystone tree (/etc/keystone/logging.conf - altougn not loaded) - we<br>
might base something "casual" and "generic" on that one.<br>
<br>
I think all wsgi/python services should configure the logging through<br>
that file so that it's clearer and cleaner. But that part is maybe a bit<br>
too big and "aggressive" :). And the logging configuration isn't that<br>
friendly, to be honest, at least I have some issues with its doc ;).<br>
<br>
But I think we might come to something nice and cool. It would allow<br>
anyone to push  their own log "formatter", in the end.<br>
So you (oslo.log) wouldn't need to work with format output requests<br>
anymore, just provide two basics (plain and json), and let users play<br>
with the logging configuration (and even output things in XML if they<br>
want) ;).<br>
<br>
Regarding oslo.log: apparently, adding the following entry in the<br>
service configuration file should do it:<br>
log-config-append¹<br>
<br>
Can anyone confirm that?<br></blockquote><div><br></div></div></div><div>It seems to be the case at least from the docs in the option [1]. But if we use this file (in TripleO and puppet) we really need to make it backwards compatible. Would folks be OK with taking it into use? I guess what it would take would be to document better the usage of this advanced configuration. Taking it into use doesn't look that bad; If you look at the file where the options are being set (_options.py), you will see that there are several options that get ignored once we start using this file [2]. To see all the options that get ignored you can look at the instances of _IGNORE_MESSAGE. So, if we would start taking that into use, we would need to change the parameters of the oslo::log resource in puppet [3] to also configure an equivalent option to that advanced logging file.<br></div><div><br></div><div>[1] <a href="https://github.com/openstack/oslo.log/blob/master/oslo_log/_options.py#L44" target="_blank">https://github.com/openstack/o<wbr>slo.log/blob/master/oslo_log/_<wbr>options.py#L44</a></div><div>[2] <a href="https://github.com/openstack/oslo.log/blob/master/oslo_log/_options.py#L32" target="_blank">https://github.com/openstack/o<wbr>slo.log/blob/master/oslo_log/_<wbr>options.py#L32</a></div><div>[3] <a href="https://github.com/openstack/puppet-oslo/blob/master/manifests/log.pp" target="_blank">https://github.com/openstack/p<wbr>uppet-oslo/blob/master/manifes<wbr>ts/log.pp</a><br></div><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
¹ <a href="https://github.com/openstack/oslo.log/blob/master/oslo_log/_options.py#L44" rel="noreferrer" target="_blank">https://github.com/openstack/o<wbr>slo.log/blob/master/oslo_log/_<wbr>options.py#L44</a><br>
<div class="m_8215468091522027800m_-4599928909074521674gmail-HOEnZb"><div class="m_8215468091522027800m_-4599928909074521674gmail-h5"><br>
><br>
> Doug<br>
><br>
> ______________________________<wbr>______________________________<wbr>______________<br>
> OpenStack Development Mailing List (not for usage questions)<br>
> Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
> <a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
><br>
<br>
<br>
</div></div><br>______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.op<wbr>enstack.org?subject:unsubscrib<wbr>e</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/cgi<wbr>-bin/mailman/listinfo/openstac<wbr>k-dev</a><br>
<br></blockquote></span></div><br><br clear="all"><span><br>-- <br><div class="m_8215468091522027800m_-4599928909074521674gmail_signature"><div dir="ltr"><div><font style="font-family:arial narrow,sans-serif;color:rgb(102,102,102)" size="2">Juan Antonio Osorio R.<br>e-mail: <a href="mailto:jaosorior@gmail.com" target="_blank">jaosorior@gmail.com</a><br></font><font style="font-family:arial narrow,sans-serif;color:rgb(102,102,102)" size="2"><br></font></div></div></div>
</span></div></div>
</blockquote></div><br><br clear="all"><br>-- <br><div class="m_8215468091522027800gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><font style="font-family:arial narrow,sans-serif;color:rgb(102,102,102)" size="2">Juan Antonio Osorio R.<br>e-mail: <a href="mailto:jaosorior@gmail.com" target="_blank">jaosorior@gmail.com</a><br></font><font style="font-family:arial narrow,sans-serif;color:rgb(102,102,102)" size="2"><br></font></div></div></div>
</div></div></div></div></div>