If you are making a significant number of calls to LogManager.GetLogger then 
you may see some benefit from performing your own caching. The 
LogManager.GetLogger call is not particularly optimised, it makes a few method 
calls through interface pointers and looks up values from 3 different 
hashtables. Whether this is significant in your application is something you 
will need to measure with a profiler.

The LogManager.GetLogger call is threadsafe, there should be no problem calling 
it repeatedly.

Cheers,

Nicko

> -----Original Message-----
> From: Thibaut Barr�re [mailto:[EMAIL PROTECTED] 
> Sent: 21 April 2005 10:01
> To: Log4NET User
> Subject: Re: separate log info from a particular method
> 
> Hello,
> 
> I have a question which is kind of related to the same topic.
> 
> I have a big amount of legacy code with a custom trace 
> system, which fortunately I'm able to redirect to log4net now.
> 
> This legacy trace system has custom names for loggers, such 
> as "service1","service2" etc, which I cannot determine at 
> compile time.
> 
> What would be the cost of having a wrapper which would do (on 
> each log call):
> ILog myLogger = LogManager.GetLogger("Legacy_"+logName);
> then log accordingly ?
> 
> Is there a need to cache the ILog instance or is it not 
> useful at all ?
> 
> Is this approach (compared to the classic static readonly ILog = ...
> approach) threadsafe from a log4net point of view ?
> 
> 
> thanks
> 
> Thibaut
> http://www.dotnetguru2.org/tbarrere
> 
> 2005/3/6, Nicko Cadell <[EMAIL PROTECTED]>:
> > If you know which logging calls in the code you want to go 
> into separate files then it is best to create separate 
> appenders for each log file as suggested below. The code 
> would select the logger required by calling 
> LogManager.GetLogger with the appropriate name, and that 
> logger would route through to the correct appender.
> > 
> > If you need to configure / reconfigure the selected method 
> at runtime then you will need to write a custom filter to 
> detect the method name, however this may not work in all 
> circumstances as the JIT may optimise away certain method 
> calls (only in Release builds).
> > 
> > Nicko
> > 
> > > -----Original Message-----
> > > From: Eduard Ralph [mailto:[EMAIL PROTECTED]
> > > Sent: 28 February 2005 17:46
> > > To: 'Log4NET User'; 'Cheng'
> > > Subject: AW: separate log info from a particular method
> > >
> > > Hi,
> > >
> > > I won't dig out the manuals to write a config but this should be 
> > > pretty close to what you would have to write:
> > >
> > > log4net>
> > >       <appender name="AAppender" 
> type="Appender.RollingFileAppender">
> > >               <file value="A.TXT" />
> > >               <appendToFile value="false" />
> > >               <!-- A1 uses PatternLayout -->
> > >               <layout type="Layout.PatternLayout">
> > >                       <conversionPattern value="[%d] %p %c %x
> > > - %m%n" />
> > >               </layout>
> > >       </appender>
> > >       <appender name="BAppender" 
> type="Appender.RollingFileAppender">
> > >               <file value="B.TXT" />
> > >               <appendToFile value="false" />
> > >               <!-- B1 uses PatternLayout -->
> > >               <layout type="Layout.PatternLayout">
> > >                       <conversionPattern value="[%d] %p %c %x
> > > - %m%n" />
> > >               </layout>
> > >       </appender>
> > >       <root>
> > >               <level value="ERROR" />
> > >               <appender-ref ref="AAppender" />
> > >       </root>
> > >       <logger name="A">
> > >               <appender-ref ref="AAppender" />
> > >       </logger>
> > >       <logger name="B">
> > >               <appender-ref ref="BAppender" />
> > >       </logger>
> > > </log4net>
> > >
> > > Eddie
> > > -----Urspr�ngliche Nachricht-----
> > > Von: Cheng [mailto:[EMAIL PROTECTED]
> > > Gesendet: Montag, 28. Februar 2005 18:15
> > > An: Log4NET User
> > > Betreff: separate log info from a particular method
> > >
> > > Hi,
> > >
> > > I am using RollingFileAppender for my whole application.
> > > Suppose the main logfile is A.txt. I want to log all information 
> > > from a particular method to a separate file say B.txt (these log 
> > > should not be logged to A.txt).
> > > StringMatchFilter filter should be work, however the particular 
> > > method has to log a particular string in order to use the 
> > > StringMatchFilter fileter. Is there any other convenient way to 
> > > archieve this? Ideally just add some config settings.
> > > thanks
> > >
> > >
> >
> 

Reply via email to