Will the reference to log4net in IBatisNet.Common be going away at some
point before the next release?

The built-in logging implementations should probably have checks around
the logging call:

 public void Debug(object message, Exception e)
 {
  if (_log.IsDebugEnabled)
  {
   _log.Debug( message, e );
  }
 }

I'm not sure how final your code is yet Gilles. I didn't want to go
messing around changing code if you were still double-checking things.

--- Ron Grabowski <[EMAIL PROTECTED]> wrote:

> Now that we have our own LogManager, we could borrow NLog's idea of
> GetCurrentClassLogger() to return the logger for the current class
> instead of the usual System.Reflection... way:
> 
> // current way
> ILog log =
>
LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType
> );
> 
> // less verbose
> ILog log = LogManager.GetCurrentClassLogger();
> 
> I haven't looked at NLog's implementation of GetCurrentClassLogger()
> but I would imagine it involves digging through the stack:
> 
>  StackTrace callStack = new StackTrace();
>  StackFrame frame = callStack.GetFrame(1); // 2 ???
>  MethodBase method = frame.GetMethod();
>  Type declaringType = method.DeclaringType; // ???
>  return LogManager.GetLogger(declaringType);
> 
> One could argue that doing that is "slower". A counter-argument would
> be that the System.Reflection... call is slow compared to:
> 
>  ILog log = LogManager.GetLogger("IBatisNet.DataAccess.DaoManager");
> 
> Its a really a non-issue since the logger is static and the call only
> happens once.
> 
> Could NoOpLogger (and/or all the built-in log implementations) be
> marked as sealed? I can't think of a case where it would be extended.
> 
> I'm in favor of making our ILog match log4net's ILog:
> 
> http://tinyurl.com/ch9b7
>
http://cvs.apache.org/viewcvs.cgi/logging-log4net/src/ILog.cs?rev=1.10&view=markup
> 
> The new beta has overloads similiar to the StringBuilder's
> AppendFormat
> method:
> 
>  DebugFormat(string format, params object[] args)
> 
> It makes things slightly cleaner:
> 
>  _logger.Debug("Open Connection [{0}] to [{1}].",
>   _connection.GetHashCode(), // 0
>   _dataSource.Provider.Description)); // 1
> 
> Perhaps the SimpleLogger could have an additional option indicating
> whether it should write to the Console.Out, System.Diagnostic.Trace,
> or
> both:
> 
>  // Print to the appropriate destination
>  System.Console.Error.WriteLine( sb.ToString() );
>  System.Diagnostics.Trace.WriteLine( sb.ToString() );
> 
> I believe NLog and log4net both write to Console.Out rather than
> Console.Error.
> 
> If there were support for writing to Trace, one could easily redirect
> the output using a TraceListener in their App.config file:
> 
>  <system.diagnostics>
>   <trace autoflush="true">
>    <listeners>
>     <add name="textWriterTraceListener" 
>      type="System.Diagnostics.TextWriterTraceListener"
>      initializeData="C:\\IBatisNetLog.txt" />
>    </listeners>
>   </trace>
>  </system.diagnostics>
> 
> I wonder if these two lines are the same. I forgot that C# had a
> PadRight :-)
> 
>
sb.Append(string.Format("[{0}]",level.ToString().ToUpper()).PadRight(8));
> sb.AppendFormat("[{0,-8}],level.ToString().ToUpper());
> 
> - Ron
> 

Reply via email to