+1
> On Apr 3, 2017, at 11:48 AM, Aviem Zur <aviem...@gmail.com> wrote: > > Upon further inspection there seems to be an issue we may have overlooked: > In cluster mode, some of the runners will have dependencies added directly > to the classpath by the cluster, and since SLF4J can only work with one > binding, the first one in the classpath will be used. > > So while what we suggested would work in local mode, the user's chosen > binding and configuration might be ignored in cluster mode, which is > detrimental to what we wanted to accomplish. > > So I believe what we should do instead is: > > 1. Add better documentation regarding logging in each runner, which > binding is used, perhaps examples of how to configure logging for that > runner. > 2. Have direct runner use the most common binding among runners (this > appears to be log4j which is used by Spark runner, Flink runner and Apex > runner). > > >> On Mon, Apr 3, 2017 at 7:02 PM Aljoscha Krettek <aljos...@apache.org> wrote: >> >> Yes, I think we can exclude log4j from the Flink dependencies. It’s >> somewhat annoying that they are there in the first place. >> >> The Flink doc has this to say about the topic: >> https://ci.apache.org/projects/flink/flink-docs-release-1.3/monitoring/logging.html >>>> On 3. Apr 2017, at 17:56, Aviem Zur <aviem...@gmail.com> wrote: >>>> >>>> * java.util.logging could be a good choice for the Direct Runner >>> Yes, this will be great for users (Instead of having no logging when >> using >>> direct runner). >>> >>>> * Logging backend could be runner-specific, particularly if it needs to >>>> integrate into some other experience >>> Good point, let's take a look at the current state of runners: >>> Direct runner - will use JUL as suggested. >>> Dataflow runner - looks like there is already no binding (There is a >>> binding in tests only). >>> Spark runner - currently uses slf4j-log4j12. does not require any >> specific >>> logger, we can change this to no binding. >>> Flink runner - uses slf4j-log4j12 transitively from Flink dependencies. >> I'm >>> assuming this is not a must and we can default to no binding here. >>> @aljoscha please confirm. >>> Apex runner - uses slf4j-log4j12 transitively from Apex dependencies. I'm >>> assuming this is not a must and we can default to no binding here. @thw >>> please confirm. >>> >>> It might be a good idea to use a consistent binding in tests (Since we'll >>> use JUL for direct runner, let this be JUL). >>> >>> On Wed, Mar 29, 2017 at 7:23 PM Davor Bonaci <da...@apache.org> wrote: >>> >>> +1 on consistency across Beam modules on the logging facade >>> +1 on enforcing consistency >>> +1 on clearly documenting how to do logging >>> >>> Mixed feelings: >>> * Logging backend could be runner-specific, particularly if it needs to >>> integrate into some other experience >>> * java.util.logging could be a good choice for the Direct Runner >>> >>> On Tue, Mar 28, 2017 at 6:50 PM, Ahmet Altay <al...@google.com.invalid> >>> wrote: >>> >>>> On Wed, Mar 22, 2017 at 10:38 AM, Tibor Kiss <tk...@hortonworks.com> >>>> wrote: >>>> >>>>> This is a great idea! >>>>> >>>>> I believe Python-SDK's logging could also be enhanced (a bit >>>> differently): >>>>> Currently we are not instantiating the logger, just using the class >> what >>>>> logging package provides. >>>>> Shortcoming of this approach is that the user cannot set the log level >>> on >>>>> a per module basis as all log messages >>>>> end up in the root level. >>>> >>>> +1 to this. Python SDK needs to expands its logging capabilities. Filed >>> [1] >>>> for this. >>>> >>>> Ahmet >>>> >>>> [1] https://issues.apache.org/jira/browse/BEAM-1825 >>>> >>>> >>>>> >>>>> On 3/22/17, 5:46 AM, "Aviem Zur" <aviem...@gmail.com> wrote: >>>>> >>>>> +1 to what JB said. >>>>> >>>>> Will just have to be documented well as if we provide no binding >>>> there >>>>> will >>>>> be no logging out of the box unless the user adds a binding. >>>>> >>>>> On Wed, Mar 22, 2017 at 6:24 AM Jean-Baptiste Onofré < >>>> j...@nanthrax.net> >>>>> wrote: >>>>> >>>>>> Hi Aviem, >>>>>> >>>>>> Good point. >>>>>> >>>>>> I think, in our dependencies set, we should just depend to >>>> slf4j-api >>>>> and >>>>>> let the >>>>>> user provides the binding he wants (slf4j-log4j12, slf4j-simple, >>>>> whatever). >>>>>> >>>>>> We define a binding only with test scope in our modules. >>>>>> >>>>>> Regards >>>>>> JB >>>>>> >>>>>>> On 03/22/2017 04:58 AM, Aviem Zur wrote: >>>>>>> Hi all, >>>>>>> >>>>>>> There have been a few reports lately (On JIRA [1] and on Slack) >>>>> from >>>>>> users >>>>>>> regarding inconsistent loggers used across Beam's modules. >>>>>>> >>>>>>> While we use SLF4J, different modules use a different logger >>>>> behind it >>>>>>> (JUL, log4j, etc) >>>>>>> So when people add a log4j.properties file to their classpath >>> for >>>>>> instance, >>>>>>> they expect this to affect all of their dependencies on Beam >>>>> modules, but >>>>>>> it doesn’t and they miss out on some logs they thought they >>> would >>>>> see. >>>>>>> >>>>>>> I think we should strive for consistency in which logger is used >>>>> behind >>>>>>> SLF4J, and try to enforce this in our modules. >>>>>>> I for one think it should be slf4j-log4j. However, if >>> performance >>>>> of >>>>>>> logging is critical we might want to consider logback. >>>>>>> >>>>>>> Note: SLF4J will still be the facade for logging across the >>>>> project. The >>>>>>> only change would be the logger SLF4J delegates to. >>>>>>> >>>>>>> Once we have something like this it would also be useful to add >>>>>>> documentation on logging in Beam to the website. >>>>>>> >>>>>>> [1] https://issues.apache.org/jira/browse/BEAM-1757 >>>>>> >>>>>> -- >>>>>> Jean-Baptiste Onofré >>>>>> jbono...@apache.org >>>>>> http://blog.nanthrax.net >>>>>> Talend - http://www.talend.com >> >>