And this did the trick. I tried to use the PropertyFilter directly, but I
couldn't come up with the property key that represented LoggerName. I tried
loggername, LoggerName, logger, Logger, log4net:logger and log4net:loggername
class NHibernateFilter : StringMatchFilter
{
public override FilterDecision Decide(LoggingEvent loggingEvent)
{
FilterDecision decision = FilterDecision.Accept;
if (loggingEvent.LoggerName.StartsWith("NHibernate"))
decision = FilterDecision.Deny;
return decision;
}
}
Thanks for your help!
--- Philip Nelson <[EMAIL PROTECTED]> wrote:
> I'll look into it, thanks.
>
> --- [EMAIL PROTECTED] 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
> > <[EMAIL PROTECTED]
> > .com> To
> > Log4NET User
> > 11/28/2005 08:40 <[email protected]>
> > AM cc
> >
> > Subject
> > Please respond to Re: Programatically changing the
> > "Log4NET User" logger for NHibernate
> > <[EMAIL PROTECTED]
> > 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 <[EMAIL PROTECTED]> 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
>
Philip - http://www.xcskiwinn.org/community/blogs/panmanphil/default.aspx
"Now that was a bad vowel movement" - Barbara