First of all let me say that I'm not trying to keep posing the same question 
until you guys agree with me.  I'm just trying to make sure I've done my due 
diligence to root out all possible options so that I can pick the one which 
ends up working out the best for our needs.

That being said, while I agree that a "Business" level doesn't quite fit the 
existing level vernacular, as was stated before, it does seem like having a 
level might help.  If all the methods which could be used to log the event take 
a level, I'm going to need to choose one.  Choosing INFO or ERROR or FATAL, 
etc., for logging a "Business" event seems a bit odd.  And while I said we want 
to make it such that you can't turn off these events, that's probably not 
correct.  If for some reason something goes wrong and we start flooding the 
system with business events we may need to turn them off.  However, we'll still 
probably want to capture INFO, ERROR, WARN and FATAL events from a systems 
management perspective.  This is where I was thinking having level be an 
enumeration as opposed to a scale might come in handy.  I could enumerate the 
exact levels I want and where I want them to go as opposed to level being a 
gauge where everything at that level and more specific match.

Your example below is good.  I'm not sure how closely it matches with a 
"business" level as the custom levels you chose do see to fit better within the 
currently defined levels.

I was really thinking that maybe the EventLogger() with a marker might work out 
well.  The reason is that the EventLogger() has an overload which doesn't take 
a level, I guess the default level is "OFF" which means it's always logged?  
However, it appears I can't pass a marker to the EventLogger() log() method.  
That in addition to log4net not supporting markers is making this a less viable 
option.

Thanks,
Nick

> Date: Wed, 16 Sep 2015 15:24:20 -0700
> Subject: Re: markers
> From: garydgreg...@gmail.com
> To: log4j-user@logging.apache.org
> 
> At first I was going to strongly recommend against using a custom level
> called BUSINESS. Custom levels have been a problem in the past at my work
> (IMO). Markers are really a perfect fit for this use-case. That got me to
> thinking about my previous idea on this of adding more levels to Log4j.
> Please bear with me. Today we have:
> 
> OFF
> FATAL
> ERROR
> WARN
> INFO
> DEBUG
> TRACE
> ALL
> 
> What I could use today are *these* levels too:
> 
> OFF
> *EXIT*
> FATAL
> ERROR
> WARN
> *HEADLINE*
> INFO
> *VERBOSE*
> DEBUG
> TRACE
> ALL
> 
> (EXIT is called when you System.exit(), which might not be loggable
> depending on I don't know what, HEADLINE is a lame name but I can't think
> of anything better, VERBOSE is obvious IMO)
> 
> Which made me wonder if your BUSINESS level could fit in like this:
> 
> OFF
> FATAL
> ERROR
> WARN
> *BUSINESS*
> INFO
> DEBUG
> TRACE
> ALL
> 
> So maybe, just maybe, I could see that a BUSINESS level makes sense instead
> of a marker.
> 
> Gary
> 
> 
> On Wed, Sep 16, 2015 at 2:34 PM, Nicholas Duane <nic...@msn.com> wrote:
> 
> > I was hoping on getting some replies to my last message as I'm trying to
> > figure out the best way to utilize the existing logging frameworks,
> > log4j(2) and log4net in our case, to log our business events and ensure the
> > business events flow to the correct destination.
> >
> > I think the two main suggestions were to either use markers or a separate
> > "well known" logger.
> >
> > As I mentioned in the previous message, I was about to write a sample
> > which used markers just to better understand how they work.  The first road
> > block I ran into is that log4net does not support markers, as far as I can
> > tell.  Now the implementation doesn't have to be the same on both windows
> > and linux, but that would certainly be a plus if it was.  Also, it doesn't
> > look like markers have been heavily adopted by many logging frameworks.
> > The one article I read only listed log4j2 and logback.
> >
> > In addition, while markers seem like they would be better at indicating
> > the type or category of event as opposed to using a level, you still have
> > to define a marker for each type I guess.  I could either define a custom
> > level or a custom marker.  Since markers are not available in log4net and
> > custom levels are, a custom level might work out better for us.
> >
> > Using a "well known" logger to log business events seems like a reasonable
> > approach.  And while I don't see any major downsides with going this route,
> > it seems that a piece of code which is logging using their own logger
> > should be able to log a business event with that same logger.  It was
> > stated previously that the level indicates the importance of the event and
> > the logger indicates the types of events, or why someone might want to look
> > at the events.  The example given was some market data code which used its
> > own logger to log market data information.  That seems totally reasonable,
> > however, it doesn't seem to fit my example.  In our case any component can
> > emit a business event.
> >
> > I then thought that maybe I could use the EventLogger, which I think
> > someone might have mentioned along the way.  I was hoping to try that out
> > also, assuming that allowed me to pass a marker in whatever methods it
> > exposed.  However, I only see a static marker property on the EventLogger
> > class.
> >
> > The other option which I'm considering is exposing a property on my event
> > object which indicates the category of event.  At the moment I have a
> > "type" property which, of course, indicates the event type.  However, this
> > will be different for every different business event and thus I need
> > another property which tells me that the event is a "business" event.  Then
> > I was thinking I could write a filter which checks the message object to
> > see if it's one of my events and if so use the "category" to forward to the
> > appropriate destination.
> >
> > Am I missing any other viable solutions?
> >
> > Thanks,
> > Nick
> >
> > > From: nic...@msn.com
> > > To: log4j-user@logging.apache.org
> > > Subject: markers
> > > Date: Tue, 15 Sep 2015 22:25:37 -0400
> > >
> > >
> > >
> > >
> > > I was about to starting writing a sample to see how markers work and to
> > see if they could be used for logging business events instead of using a
> > custom level.  While I might have mentioned log4net in passing, we're
> > trying to capture these business events using existing logging frameworks.
> > The thinking is that we'd use log4net on windows and log4j(2) on linux (no
> > facade).  Ideally the design would be similar across both platforms.  That
> > being said, I'm surprised at how different log4net is from log4j(2).  It
> > appears log4net doesn't support markers.  While we don't have to have the
> > same solution for both platforms, it would be nice if the solutions were
> > the same or similar.
> > >
> > > I also looked at the EventLogger and that class doesn't have any
> > overloads which take a marker, just a static marker property.  I guess the
> > EventLogger can be assigned only a single marker?
> > >
> > > Thanks,
> > > Nick
> > >
> > >
> > >
> > >
> >
> >
> 
> 
> 
> -- 
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
                                          

Reply via email to