Hi Sergey,

What I'm asking is that the feature is implemented in a way that will allow
Apex to run with different logger backend. That means that log4j needs to
be optional.

Thanks,
Thomas


On Sat, Apr 15, 2017 at 2:01 PM, Sergey Golovko <ser...@datatorrent.com>
wrote:

> I agree it would be very nice to use only slf4j interfaces for the
> implementation. But unfortunately the interface Appender belongs to
> org.apache.log4j package.
>
> "SLF4J is only a facade, meaning that it does not provide a complete
> logging solution. Operations such as configuring appenders or setting
> logging levels cannot be performed with SLF4J. Thus, at some point in time,
> any non-trivial application will need to directly invoke the underlying
> logging system. In other words, complete independence from the API
> underlying logging system is not possible for a stand-alone application.
> Nevertheless, SLF4J reduces the impact of this dependence to near-painless
> levels."
>
> https://www.slf4j.org/faq.html#when
>
> Thanks,
> Sergey
>
>
> On Thu, Apr 13, 2017 at 7:56 AM, Thomas Weise <t...@apache.org> wrote:
>
> > +1
> >
> > Also the proposed feature would need to be implemented in a way that
> avoids
> > a hard dependency on log4j. The interface for logging is slf4j and it
> > should be possible to use other logger backends.
> >
> >
> > On Mon, Apr 10, 2017 at 9:21 PM, Sergey Golovko <ser...@datatorrent.com>
> > wrote:
> >
> > > I don't think an operator needs a specific appender. An appender can be
> > > dynamically assigned to an application designer, application master and
> > > container.
> > >
> > > Thanks,
> > > Sergey
> > >
> > >
> > > On Mon, Apr 10, 2017 at 6:26 PM, Munagala Ramanath <
> r...@datatorrent.com>
> > > wrote:
> > >
> > > > I don't have one, I thought that was what the intent of the proposal
> > was,
> > > > but looks like
> > > > I misunderstood. After re-reading some of the earlier responses, I
> > > > understand the
> > > > proposal better.
> > > >
> > > > Ram
> > > >
> > > >
> > > >
> > > > On Mon, Apr 10, 2017 at 5:39 PM, Vlad Rozov <v.ro...@datatorrent.com
> >
> > > > wrote:
> > > >
> > > > > I don't see a use case where an individual operators need to
> define a
> > > > > specific appender, can you provide one?
> > > > >
> > > > > Thank you,
> > > > >
> > > > > Vlad
> > > > >
> > > > > On 4/10/17 16:53, Munagala Ramanath wrote:
> > > > >
> > > > >> Yes, totally agree, it would be helpful to have a detailed use
> case
> > > > and/or
> > > > >> a detailed spec
> > > > >> of the desired capabilities -- not necessarily a complete spec but
> > > with
> > > > >> enough detail to
> > > > >> understand why existing capabilities are inadequate.
> > > > >>
> > > > >> Ram
> > > > >>
> > > > >> On Mon, Apr 10, 2017 at 4:43 PM, Vlad Rozov <
> > v.ro...@datatorrent.com>
> > > > >> wrote:
> > > > >>
> > > > >> It will be good to understand a use case where an operator needs a
> > > > >>> specific appender.
> > > > >>>
> > > > >>> IMO, an operator designer defines *what* should be logged and
> > dev-ops
> > > > >>> team
> > > > >>> defines *where* to log.
> > > > >>>
> > > > >>> Thank you,
> > > > >>>
> > > > >>> Vlad
> > > > >>> On 4/10/17 16:27, Munagala Ramanath wrote:
> > > > >>>
> > > > >>> Yes, I understand, I was just wondering if individual operators
> > could
> > > > >>>> define the appenders
> > > > >>>> they potentially need at compile time and then the operator
> > > callbacks
> > > > >>>> could
> > > > >>>> simply
> > > > >>>> check the desired runtime condition and add the appropriate
> > > appender.
> > > > >>>>
> > > > >>>> Or are we saying there are scenarios where we absolutely cannot
> > > create
> > > > >>>> the
> > > > >>>> appender beforehand ?
> > > > >>>>
> > > > >>>> So broadly speaking, my question is whether the combination of
> > > > providing
> > > > >>>> predefined appenders
> > > > >>>> and the PropertyConfigurator capabilities meets the need.
> > > > >>>>
> > > > >>>> Ram
> > > > >>>>
> > > > >>>> On Mon, Apr 10, 2017 at 2:18 PM, Sergey Golovko <
> > > > ser...@datatorrent.com
> > > > >>>> >
> > > > >>>> wrote:
> > > > >>>>
> > > > >>>> Ram,
> > > > >>>>
> > > > >>>>> Really the new appender class must extend the abstract class
> > > > >>>>> AppenderSkeleton. And in order to add a new appender
> > > programmatically
> > > > >>>>> in
> > > > >>>>> Java, some code in Apex should call the following log4j method:
> > > > >>>>>
> > > > >>>>> org.apache.log4j.Logger.getRootLogger().addAppender(Appender
> > > > >>>>> newAppender)
> > > > >>>>>
> > > > >>>>> The general idea of my proposal is "*based on some runtime
> > > > parameter(s)
> > > > >>>>> to
> > > > >>>>> provide ability to create an appender instance via reflection
> and
> > > add
> > > > >>>>> it
> > > > >>>>> to
> > > > >>>>> the list of active log4j appenders*".
> > > > >>>>>
> > > > >>>>> Thanks,
> > > > >>>>> Sergey
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> On Mon, Apr 10, 2017 at 2:04 PM, Vlad Rozov <
> > > v.ro...@datatorrent.com
> > > > >
> > > > >>>>> wrote:
> > > > >>>>>
> > > > >>>>> It will require application recompilation and repackaging. The
> > > > proposed
> > > > >>>>>
> > > > >>>>>> functionality is for dev-ops to be able to route application
> > > logging
> > > > >>>>>> to
> > > > >>>>>> a
> > > > >>>>>> preferred destination without recompiling applications. It is
> > > > run-time
> > > > >>>>>> configuration vs compile time hardcoded appender.
> > > > >>>>>>
> > > > >>>>>> Thank you,
> > > > >>>>>>
> > > > >>>>>> Vlad
> > > > >>>>>>
> > > > >>>>>> On 4/10/17 11:23, Munagala Ramanath wrote:
> > > > >>>>>>
> > > > >>>>>> You can do it in a trivial derived class without changing the
> > base
> > > > >>>>>> class.
> > > > >>>>>> Ram
> > > > >>>>>>
> > > > >>>>>>> On Mon, Apr 10, 2017 at 11:19 AM, Vlad Rozov <
> > > > >>>>>>> v.ro...@datatorrent.com>
> > > > >>>>>>> wrote:
> > > > >>>>>>>
> > > > >>>>>>> Does not the proposal to use Logger.addAppender() requires
> > > > >>>>>>> modifications
> > > > >>>>>>>
> > > > >>>>>>> to used operators code?
> > > > >>>>>>>>
> > > > >>>>>>>> Thank you,
> > > > >>>>>>>>
> > > > >>>>>>>> Vlad
> > > > >>>>>>>>
> > > > >>>>>>>> On 4/10/17 10:58, Munagala Ramanath wrote:
> > > > >>>>>>>>
> > > > >>>>>>>> People can currently do this by simply implementing the
> > Appender
> > > > >>>>>>>>
> > > > >>>>>>>> interface
> > > > >>>>>>>>> and adding it
> > > > >>>>>>>>> with Logger.addAppender() in the setup method. Why do we
> need
> > > > >>>>>>>>>
> > > > >>>>>>>>> something
> > > > >>>>>>>>
> > > > >>>>>>> more elaborate ?
> > > > >>>>>>
> > > > >>>>>>> Ram
> > > > >>>>>>>>>
> > > > >>>>>>>>> On Mon, Apr 10, 2017 at 10:30 AM, Sergey Golovko <
> > > > >>>>>>>>> ser...@datatorrent.com>
> > > > >>>>>>>>> wrote:
> > > > >>>>>>>>>
> > > > >>>>>>>>> The configuration of a log4j appender via log4j
> configuration
> > > > file
> > > > >>>>>>>>> is
> > > > >>>>>>>>>
> > > > >>>>>>>>> a
> > > > >>>>>>>>
> > > > >>>>>>> static configuration that cannot be disabled/enabled and
> > managed
> > > > >>>>>>
> > > > >>>>>>> dynamically by an application designer. The programmatic
> > approach
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> will
> > > > >>>>>>>>>
> > > > >>>>>>>> allow  an application designer to specify which of the
> > available
> > > > >>>>>>
> > > > >>>>>>> log4j
> > > > >>>>>>>>>
> > > > >>>>>>>> appenders should be used for the specific application.
> > > > >>>>>>
> > > > >>>>>>> It is not necessary Apex should use the predefined log4j
> > > appenders
> > > > >>>>>>>>>> only.
> > > > >>>>>>>>>> The log4j events contain useful but the very limited
> number
> > of
> > > > >>>>>>>>>> properties
> > > > >>>>>>>>>> which values can be printed into output log4j sources. But
> > > based
> > > > >>>>>>>>>> on
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> the
> > > > >>>>>>>>>
> > > > >>>>>>>> knowledge of the software product workflow, the custom
> defined
> > > > log4j
> > > > >>>>>>
> > > > >>>>>>> appender can extend a list of predefined output log events
> > > > >>>>>>>>>> properties
> > > > >>>>>>>>>> and,
> > > > >>>>>>>>>> for instance for Apex, return: node, user name,
> application
> > > > name,
> > > > >>>>>>>>>> application id, container id, operator name, etc.
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> Also the output log events that are generated by a custom
> > > > defined
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> log4j
> > > > >>>>>>>>>
> > > > >>>>>>>> appender can be stored and indexed by any type of a full
> text
> > > > search
> > > > >>>>>>
> > > > >>>>>>> database. It will allow the customers and developers to
> > simplify
> > > > >>>>>>>>>> collection
> > > > >>>>>>>>>> of log events statistics and searching/filtering of
> specific
> > > > >>>>>>>>>> events
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> for
> > > > >>>>>>>>>
> > > > >>>>>>>> debugging and investigation.
> > > > >>>>>>
> > > > >>>>>>> Thanks,
> > > > >>>>>>>>>> Sergey
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> On Mon, Apr 10, 2017 at 6:34 AM, Vlad Rozov <
> > > > >>>>>>>>>> v.ro...@datatorrent.com
> > > > >>>>>>>>>> wrote:
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> +1 Apex engine does not own log4j config file - it is
> > provided
> > > > >>>>>>>>>> either
> > > > >>>>>>>>>> by
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> Hadoop or an application. Hadoop log4j config does not
> > > > necessarily
> > > > >>>>>>>>>>
> > > > >>>>>>>>>>> meet
> > > > >>>>>>>>>>> application logging requirements, but if log4j is
> provided
> > by
> > > > an
> > > > >>>>>>>>>>> application designer, who can only specify what to log,
> it
> > > may
> > > > >>>>>>>>>>> not
> > > > >>>>>>>>>>> meet
> > > > >>>>>>>>>>> operations requirements. Dev-ops should have an ability
> to
> > > > >>>>>>>>>>> specify
> > > > >>>>>>>>>>> where
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> to
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> log depending on the available infrastructure at
> run-time.
> > > > >>>>>>>>>>
> > > > >>>>>>>>>> It will be good to have an ability not only specify extra
> > > log4j
> > > > >>>>>>>>>>> appenders
> > > > >>>>>>>>>>> at lunch time, but also at run-time, the same way how
> log4j
> > > > >>>>>>>>>>> logger
> > > > >>>>>>>>>>> levels
> > > > >>>>>>>>>>> may be changed.
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> Thank you,
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> Vlad
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> On 4/9/17 23:14, Priyanka Gugale wrote:
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> We can always write a custom appender and add it by
> > changing
> > > > root
> > > > >>>>>>>>>>> appender
> > > > >>>>>>>>>>> in log4j config file. Can you explain how adding appender
> > > > >>>>>>>>>>> grammatically
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>> would help?
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>>>> -Priyanka
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> On Sun, Apr 9, 2017 at 11:50 AM, Sanjay Pujare <
> > > > >>>>>>>>>>>> san...@datatorrent.com
> > > > >>>>>>>>>>>> wrote:
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> Please give some examples and/or use cases of this
> > > > programmatic
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> log4j
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> appender.
> > > > >>>>>>
> > > > >>>>>>> On Fri, Apr 7, 2017 at 8:40 PM, Sergey Golovko <
> > > > >>>>>>>>>>>>> ser...@datatorrent.com
> > > > >>>>>>>>>>>>> wrote:
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> Hi All,
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> I'd like to add supporting of a custom defined log4j
> > > appender
> > > > >>>>>>>>>>>>> that
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> can
> > > > >>>>>>>>>>>>>> be
> > > > >>>>>>>>>>>>>> added to Apex Application Master and Containers and be
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> configurable
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> programmatically.
> > > > >>>>>>
> > > > >>>>>>> Sometimes it is not trivial to control log4j configuration
> via
> > > > >>>>>>>>>>>>>> log4j
> > > > >>>>>>>>>>>>>> properties. And I think the having of the approach to
> > add
> > > a
> > > > >>>>>>>>>>>>>> log4j
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> appender
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> programmatically will allow the customers and
> developers
> > > to
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> plugin
> > > > >>>>>>>>>>>>> their
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> own custom defined log4j appenders and be much flexible
> > for
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> streaming
> > > > >>>>>>>>>>>
> > > > >>>>>>>>>> and
> > > > >>>>>>
> > > > >>>>>>> collection of Apex log events.
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> I assume to provide generic approach for definition of
> > the
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> programmatic
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> log4j appender and to pass all configuration
> parameters
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>> including a
> > > > >>>>>>>>>>>> name
> > > > >>>>>>>>>>>> of
> > > > >>>>>>>>>>>> the Java class with implementation of the log4j appender
> > via
> > > > >>>>>>>>>>>> system
> > > > >>>>>>>>>>>>
> > > > >>>>>>>>>>>> and/or
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> command line properties.
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>> Thanks,
> > > > >>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>> Sergey
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>>>>>>>>>>>
> > > > >>>>
> > > > >>
> > > > >
> > > >
> > > >
> > > > --
> > > >
> > > > _______________________________________________________
> > > >
> > > > Munagala V. Ramanath
> > > >
> > > > Software Engineer
> > > >
> > > > E: r...@datatorrent.com | M: (408) 331-5034 | Twitter: @UnknownRam
> > > >
> > > > www.datatorrent.com  |  apex.apache.org
> > > >
> > >
> >
>

Reply via email to