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