Can you please clarify, “If we had some way to know an event is a business 
event we wouldn’t need level”?  I do not understand how you can code 
logger.log(BUSINESS, msg)  but you cannot code logger.info(BUSINESS, msg).

Ralph

> On Sep 8, 2015, at 6:09 PM, Nicholas Duane <nic...@msn.com> wrote:
> 
> 
> 
> 
> I looked over that stackoverflow post and I'm still not seeing a good match 
> as a way for us to log our business events.
> 
> A business event I guess is an event which extends whatever schema we come up 
> with for a business event.  While an instance of this schema could be logged 
> at any level, that really doesn't make sense in our scenario, regardless of 
> whether some marker was supplied.  If we had some way to know an event is a 
> business event we wouldn't need level.  We could of course add some property 
> to our schema which indicates the 'category' of the event, 'business' being 
> one such category.  Instead we were thinking we could just use level to 
> indicate that an event is a business event.
> 
> As I mentioned, we're looking to capture 'trace' level events to one store, 
> 'info' - 'fatal' level events to another store, and 'business' events to yet 
> another store.  For 'trace' and 'info' - 'fatal' it seems reasonable to 
> filter on level within the appender to get those events to the appropriate 
> location.  It seemed reasonable to do something similar for 'business'.
> 
> I also looked into the EventLogger but not sure that's appropriate.  For one 
> we lose the granularity to control a specific piece of code from generating 
> business events.  This is most likely a non-issue as I have mentioned that we 
> don't want to turn business logging off.  The other is that we lose the name 
> of the logger as it would be the same for everyone.  Not sure this is that 
> big a deal either as I guess you might be able to capture component name, 
> though I would rather distinguish using logger name.
> 
> Thanks,
> Nick
> 
>> From: ralph.go...@dslextreme.com
>> Subject: Re: approach for defining loggers
>> Date: Mon, 7 Sep 2015 20:39:11 -0700
>> To: log4j-user@logging.apache.org
>> 
>> I still don’t understand why you don’t want to use Markers. They were 
>> designed exactly for the use case you are describing.  
>> 
>> You might set retention policies for debug vs info, error and fatal, but a 
>> BUSINESS marker could cross-cut them all.  That is exactly why it is NOT a 
>> level. IOW, it gives you a second dimension for filtering. Ceki invented 
>> Markers when he created SLF4J. For his point of view see 
>> http://stackoverflow.com/questions/16813032/what-is-markers-in-java-logging-frameworks-and-that-is-a-reason-to-use-them
>>  
>> <http://stackoverflow.com/questions/16813032/what-is-markers-in-java-logging-frameworks-and-that-is-a-reason-to-use-them>.
>> 
>> Ralph
>> 
>> 
>> 
>> 
>>> On Sep 7, 2015, at 5:54 PM, Nicholas Duane <nic...@msn.com> wrote:
>>> 
>>> If I'm attempting to control all the logging from the configuration and I 
>>> don't know the complete set of loggers in my application as there could be 
>>> 100's or 1000's, wouldn't it be hard to separate events based on loggers?  
>>> It would seem much easier to separate events based on level.  In addition, 
>>> level might be a more reasonable approach for separating.  For example, if 
>>> I want to send all events to some big-data backend I might want to separate 
>>> out traces and debug from info to fatal as traces and debug are most likely 
>>> less important from a systems management aspect.  My retention period for 
>>> traces and debug might be just a couple days.  The retention period for 
>>> info to fatal could be 30 days.  Business level might be 2 years.  Any 
>>> system management notifications would probably be driven off of info to 
>>> fatal events and not trace and debug events, which is another reason you 
>>> might want to separate by level.  
>>> 
>>> Thanks,
>>> Nick
>>> 
>>>> Subject: Re: approach for defining loggers
>>>> From: ralph.go...@dslextreme.com
>>>> Date: Mon, 31 Aug 2015 08:50:58 -0700
>>>> To: log4j-user@logging.apache.org
>>>> 
>>>> A logging “Level” is a level of importance. That is why there is a 
>>>> hierarchy. If you want informational messages then you also would want 
>>>> warnings and errors.
>>>> 
>>>> “BUSINESS” does not convey the same meaning.  Rather, it is some sort of 
>>>> category, which is what Markers are for.
>>>> 
>>>> Using the class name as the logger name is a convention. If you really 
>>>> want the class name, method name or line number then you should be 
>>>> specifying that you want those from the logging event, rather than the 
>>>> logger name.  Unless location information is disabled you always have 
>>>> access to that information.
>>>> 
>>>> In short, different loggers are used primarily as a way of grouping sets 
>>>> of messages - for example all org.hibernate events can be routed to a 
>>>> specific appender or turned off en masse. Levels are used to filter out 
>>>> noise across a set of logging events. Markers are used to categorize 
>>>> logging events by arbitrary attributes.
>>>> 
>>>> Ralph
>>>> 
>>>> 
>>>>> On Aug 31, 2015, at 8:10 AM, Nicholas Duane <nic...@msn.com> wrote:
>>>>> 
>>>>> Thanks for the feedback.  I will look into Markers and MDC.
>>>>> 
>>>>> With respect to using a separate logger, it would seem I would lose the 
>>>>> information about what application code, eg. the class logger, is 
>>>>> sourcing the event.  We would like to have this information.  On top of 
>>>>> that, it seems odd, maybe to me only, that for this new level we have our 
>>>>> own logger.  It seemed reasonable to me that this new event we want to 
>>>>> capture is just a new level.  Just like a DEBUG event is different from 
>>>>> an INFO event.  If I define a BUSINESS level why would that not follow 
>>>>> the same design as the current levels?  You wouldn't suggest having 
>>>>> different loggers for TRACE DEBUG INFO WARN ERROR FATAL, would you?  I 
>>>>> think one of the reasons someone on our side is suggesting I have 
>>>>> separate loggers is that they think the overhead of filtering at the 
>>>>> appender is going to have a noticeable impact.  Our plan, at least the 
>>>>> one I have now in my head, is that we'll have some number of appenders in 
>>>>> the root.  We'll then filter x < INFO events to a tracing appender, INFO 
>>>>> <= x <= FATAL to a logging appender, and our custom level will go to 
>>>>> another appender.  Thoughts?
>>>>> 
>>>>> Thanks,
>>>>> Nick
>>>>> 
>>>>>> Subject: Re: approach for defining loggers
>>>>>> From: ralph.go...@dslextreme.com
>>>>>> Date: Sat, 29 Aug 2015 20:59:36 -0700
>>>>>> To: log4j-user@logging.apache.org
>>>>>> 
>>>>>> 
>>>>>>> On Aug 29, 2015, at 7:44 PM, Nicholas Duane <nic...@msn.com> wrote:
>>>>>>> 
>>>>>>> I'm curious if there is a prescribed approach to defining loggers.  Let 
>>>>>>> me state what my assumption is.  I assume that normally if some piece 
>>>>>>> of code wants to log events/messages that it should create a logger for 
>>>>>>> itself.  I guess a reasonable name to use is the class name itself.  In 
>>>>>>> terms of logger configuration I would expect that no loggers are 
>>>>>>> specified in the log4j configuration UNLESS is needs settings other 
>>>>>>> than the default.  The root logger would specify the default settings, 
>>>>>>> eg. level and appenders.  If some piece of code tied to a logger needs 
>>>>>>> to enable tracing in order to debug an issue then you would add that 
>>>>>>> logger to the configuration and set the level less specific for that 
>>>>>>> logger.  Is this a typical and reasonable approach?
>>>>>> 
>>>>>> What you describe here is the common convention. It is a reasonable 
>>>>>> approach.
>>>>>> 
>>>>>>> 
>>>>>>> I asked because we have the need for a new type of event.  To have this 
>>>>>>> event flow to where we want it to flow the plan is to have a custom 
>>>>>>> level and have all events at that level captured by a specific 
>>>>>>> appender.  My assumption was that for existing applications we'd just 
>>>>>>> need to add our appender to the root and add our custom level.  The app 
>>>>>>> would need to be modified to log our new event at the custom level.  
>>>>>>> However, someone suggested that we could also create a separate logger 
>>>>>>> for this event.  My thinking is that while we don't ever want to turn 
>>>>>>> off logging of this event, loggers represent "event sources", e.g the 
>>>>>>> code raising the events and thus having multiple different pieces of 
>>>>>>> code use the same logger wouldn't allow you to turn on/off logging from 
>>>>>>> those different sections of code independently.  I think the current 
>>>>>>> configuration includes all the loggers.  Normally I would expect there 
>>>>>>> to be many, on the order of 10's or 100's, loggers within an 
>>>>>>> application.  However, in the case I was given there were only a 
>>>>>>> handful because I think this handful is shared.  So as I mentioned, 
>>>>>>> this doesn't sound like an ideal design as you have less granularity on 
>>>>>>> what you can turn on/off.
>>>>>> 
>>>>>> You have a few options. Using a CustomLevel would not be the option I 
>>>>>> would choose.  Creating a custom Logger will certainly work and makes 
>>>>>> routing the message to the appropriate appender rather easy.  Another 
>>>>>> approach is to use Markers.  Markers are somewhat hierarchical so you 
>>>>>> can use them for a variety of purposes.  If you look at how Log4j 
>>>>>> handles event logging it actually does both - it specifies EventLogger 
>>>>>> as the name of the logger to use and it uses Markers to identify the 
>>>>>> kind of event.
>>>>>> 
>>>>>> A third option is to use the MDC or Logger properties. If you do that 
>>>>>> then you can have information included in the actual logging event that 
>>>>>> can affect how it is routed. I also built a system that uses the RFC5424 
>>>>>> format so that the event could have lots of key/value pairs to identify 
>>>>>> the events.
>>>>>> 
>>>>>> Unfortunately, without knowing more details I don’t know that I can give 
>>>>>> you a better idea on how I would implement it.
>>>>>> 
>>>>>> Ralph
>>>>>> 
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>>>>> 
>>>>>                                     
>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
>>>> For additional commands, e-mail: log4j-user-h...@logging.apache.org
>>>> 
>>>                                       
>> 
> 
>                                         



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-user-h...@logging.apache.org

Reply via email to