<div dir="ltr"><div><div><div><div><div><div>Hi Ceki,<br><br></div>Just to let you know about my progress on investigating if it is possible to adapt SLF4J better for Google Appengine.<br></div></div>It worked well for local deploy on Appengine SDK, but did not have any effect on Appengines production environment.<br></div>I did not give up yet, but I have been short on time. I will write eventually about further results.<br><br></div>Best regards,<br></div>Daniel Felix Ferber<br></div><div class="gmail_extra"><br><div class="gmail_quote">2016-03-09 11:52 GMT-03:00 Ceki Gulcu <span dir="ltr"><<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
I think JDK14LoggerAdapter is the place to start. As I am not familiar with Appengine logging I am afraid I can't help much.<span class=""><br>
<br>
On 3/9/2016 14:18, Daniel Felix Ferber wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
Hi Ceki,<br>
<br>
I considered the possibility of writing a wrapper on my own. But first I<br>
would appreciate your advice if that would actually be a reasonable<br>
approach.<br>
Maybe I am missing something and trying to solve it on the wrong way?<br>
<br>
One possibility would be a wrapper that is very similar to your<br>
JDK14LoggerAdapter, reusing Appengine's JUL implementation. Another<br>
possibility would be a wrapper that calls Appengine API directly, but I<br>
am not sure if this is possible. I will do some research and prototyping<br>
and let you know if succeeded or not.<br>
<br>
Best regards,<br>
Daniel<br>
<br></span>
2016-03-09 4:37 GMT-03:00 Ceki Gulcu <<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a> <mailto:<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a>>>:<div><div class="h5"><br>
<br>
    Hi Daniel,<br>
<br>
    Do you intend to write this wrapper for Appengine. If so, I would<br>
    happy be to reference it from the SLF4J web-site.<br>
<br>
    --<br>
    Ceki<br>
<br>
<br>
<br>
    On 3/9/2016 4:54, Daniel Felix Ferber wrote:<br>
<br>
        Hi,<br>
<br>
        I have been wondering why the logger name is missing for<br>
        application log<br>
        messages on Google Appengine. Instead of the logger name, it<br>
        displays<br>
        the sourceClassName and sourceMethodName. (Appengine uses its own<br>
        logging framework whose API is identical to JUL).<br>
<br>
        After extensive research I found [1,2,3] and I infer that Appengine<br>
        converts JUL LogRecords to AppLogLines, which are stored as<br>
        LogLine JSON<br>
        representation. Note that AppLogLine and LogLine have no 'logger<br>
        name'<br>
        attribute. I conclude that Appengine lacks the 'logger name'<br>
        concept on<br>
        its Cloud Platform Log storage.<br>
<br>
        First, I believe (imho) that logger name is much more<br>
        significant than<br>
        class and method name.<br>
        Second, as you cannot see the logger name, it gets challenging to<br>
        configure proper log levels to potentially unknown logger names.<br>
        This<br>
        issue mitigated if there is always one logger per class, named<br>
        exactly<br>
        as the class FQCN.<br>
<br>
        I think that SLF4J could aid under Appengine. For example, when<br>
        adapting<br>
        log message from SLF4J to JUL, instead of calling<br>
        fillCallerData(fqcn,<br>
        logRecord), it could set sourceMethodName to null and<br>
        sourceClassName to<br>
        the logger name... Maybe as a wrapper implementation for Appengine?<br>
<br>
        [1] <a href="https://cloud.google.com/appengine/docs/java/logs/" rel="noreferrer" target="_blank">https://cloud.google.com/appengine/docs/java/logs/</a><br>
        [2]<br>
        <a href="https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/log/AppLogLine" rel="noreferrer" target="_blank">https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/log/AppLogLine</a><br>
        [3]<br>
        <a href="https://cloud.google.com/logging/docs/api/ref/rest/v1beta3/LogLine" rel="noreferrer" target="_blank">https://cloud.google.com/logging/docs/api/ref/rest/v1beta3/LogLine</a><br>
<br>
    _______________________________________________<br>
    slf4j-user mailing list<br></div></div>
    <a href="mailto:slf4j-user@qos.ch" target="_blank">slf4j-user@qos.ch</a> <mailto:<a href="mailto:slf4j-user@qos.ch" target="_blank">slf4j-user@qos.ch</a>><br>
    <a href="http://mailman.qos.ch/mailman/listinfo/slf4j-user" rel="noreferrer" target="_blank">http://mailman.qos.ch/mailman/listinfo/slf4j-user</a><span class=""><br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
slf4j-user mailing list<br>
<a href="mailto:slf4j-user@qos.ch" target="_blank">slf4j-user@qos.ch</a><br>
<a href="http://mailman.qos.ch/mailman/listinfo/slf4j-user" rel="noreferrer" target="_blank">http://mailman.qos.ch/mailman/listinfo/slf4j-user</a><br>
<br>
</span></blockquote><div class="HOEnZb"><div class="h5">
_______________________________________________<br>
slf4j-user mailing list<br>
<a href="mailto:slf4j-user@qos.ch" target="_blank">slf4j-user@qos.ch</a><br>
<a href="http://mailman.qos.ch/mailman/listinfo/slf4j-user" rel="noreferrer" target="_blank">http://mailman.qos.ch/mailman/listinfo/slf4j-user</a></div></div></blockquote></div><br></div>