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