logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Philip Nelson <panmanp...@yahoo.com>
Subject Re: Programatically changing the logger for NHibernate
Date Mon, 28 Nov 2005 14:35:29 GMT
I'll look into it, thanks.

--- DWilliams@strohlsystems.com wrote:

> I would think that you could set up a filter to exclude the NHibernate
> logs.  Looking at the code however implies that you might have to write a
> not assembly filter.
> 
> 
> 
> 
>                                                                            
>              Philip Nelson                                                 
>              <panmanphil@yahoo                                             
>              .com>                                                      To 
>                                        Log4NET User                        
>              11/28/2005 08:40          <log4net-user@logging.apache.org>   
>              AM                                                         cc 
>                                                                            
>                                                                    Subject 
>              Please respond to         Re: Programatically changing the    
>               "Log4NET User"           logger for NHibernate               
>              <log4net-user@log                                             
>              ging.apache.org>                                              
>                                                                            
>                                                                            
>                                                                            
>                                                                            
> 
> 
> 
> 
> Since replies have been light, and my reply to "why not use xml
> configuration"
> might have been a little abrupt, let me elaborate.
> 
> I have been a log4net user almost since the first release. I have
> evangelized
> using it for the whole time, just like I evangelized log4j to my java
> clients
> before that. The tool is just what I want and has been really useful to me.
> I
> hope my last post didn't lead you to think I'm anti xml or something. I
> think
> I'm still listed on the JDOM JSR expert group, and have accepted patches in
> both the crimson and xerces parsers.
> 
> My original reason for trying this was because I was working on some code
> to
> invoke HttpRuntime outside of IIS, and the HttpRuntime configuration system
> insists on being the first caller of System.Configuration. At the time, I
> understood the log4net assembly attribute as responsible for loading the
> configuration system, and thought, how hard could this be to do in code.
> The
> answer was not hard, and I got the side benefits of not having to maintain
> dozens of log4net config files scattered in the flotsam and jetsam of 4
> years
> of development. And, it would not require any fuss when versions change,
> unlike
> the publicpolicytoken attribute of the xml configuration file. And, I can
> use
> injection techniques to add logging setup to my apps with minmal coding.
> Dang!
> 
> Then nhibernate entered the picture and decided to log on it's own, bad
> behavior for a library except for debug logging IMHO.
> 
> --- Philip Nelson <panmanphil@yahoo.com> wrote:
> 
> > I had added a configuration that built my loggers in code only and all
> was
> > well
> > (no xml!). Later though, I found out that NHibernate is doing something
> bad,
> > logging exceptions with log.Error. These exceptions are handled by the
> > caller,
> > so I really don't want those log calls made at all. No problem, I thought
> I'd
> > create a repository for the NHibernate assembly, setup the appender I
> want,
> > and
> > this would get used instead of my default logger that sends emails on
> error.
> >
> > ILoggerRepository logger = Reset(); //the normal logger
> >
> > string pattern = "%d %-5p %c %x - %m%n";
> > string filename = Path.Combine(_logPath, LogFileName);
> > string debugFilename = Path.Combine(_logPath + "debug/", LogFileName);
> >
> > //setup nhibernate logger separately so it will not email errors
> > Type nType = AppContext.ActiveSession.GetType(); //gets the NHibernate
> > ISession
> > Assembly nhib = nType.Assembly;
> > ILoggerRepository nrep = null;
> > ILogger l = LoggerManager.GetLogger(nhib, nType);
> > nrep = l.Repository;
> > nrep.ResetConfiguration();
> > ForwardingAppender dbgAppender = new ForwardingAppender();
> > dbgAppender.AddAppender(setupDebugAppender(pattern, Path.Combine(_logPath
> +
> > "debug/NHib", LogFileName)));
> > log4net.Config.BasicConfigurator.Configure(nrep, dbgAppender);
> >
> > My assumption was that the normal logger repository, "logger" would now
> not
> > be
> > used because NHibernate gets its logger with
> > LogManager.GetLogger(typeof(this)).
> >
> > The new logger logs correctly, but the original logger also logs, so my
> goal
> > of
> > getting rid of the emails wasn't met.
> >
> > Any ideas about how to cheat NHibernate of it's logging?
> >
> > Philip - http://www.xcskiwinn.org/community/blogs/panmanphil/default.aspx
> > "Now that was a bad vowel movement" - Barbara
> >
> 
> 
> Philip - http://www.xcskiwinn.org/community/blogs/panmanphil/default.aspx
> "Now that was a bad vowel movement" - Barbara
> 
> 
> 


Philip - http://www.xcskiwinn.org/community/blogs/panmanphil/default.aspx
"Now that was a bad vowel movement" - Barbara

Mime
View raw message