Because of "A", wrapping log4net is a bad idea. It's a noble thought, but in 10+ years of using log4net and having people around and above me demand wrapping, I've never seen log4net replaced. Given you can always write an appender to output to any other system as necessary, the "need" for wrapping is moot.
B) the only way to wrap it "better" would be to walk the stack everytime something is logged to see who the calling method was.. Horribly slow, so I wouldn't call it better. C) Some part of your config is wrong. We log in release mode all the time. -Peter On Sat, Jul 18, 2009 at 4:53 PM, xalex <[email protected]> wrote: > > Hi forum, > > I would like to use log4net in a large .net development. because i have the > requirement to prepare a potential replacement of the log4net framework > e.g. > against ms-enterprise library or against a newer version of log4net, i > would > like to wrap this. My way to do it is straight forward: > A single assembly references the log4net framework, offes the ILog and > LogManager classes, and all other projects reference only this wrapper (see > below). > > This wrapper allows me to restrict the users on only the main functions > which are really needed and allows me to replace this framework, > potentially. > > Now my question: When the ILog.Debug() Method is called, the output in the > logfile is wrong, because the LocationInfo used for this output corresponds > to the Wrapper and not to the code from which it is really called :-( > > A: Is there an easy way to fix this problem? > B: Is there a better idea to wrap log4net > C: Is it true, that logging is only possible in DEBUG-Builds? When using > the > release build, i dont get any output > > Thanks > Alex > > > > Wrapper: > ------------ > public interface ILog > { > bool IsDebugEnabled { get; } > bool IsErrorEnabled { get; } > bool IsFatalEnabled { get; } > bool IsInfoEnabled { get; } > bool IsWarnEnabled { get; } > > void Debug(object message); > void Error(object message); > void Fatal(object message); > void Info(object message); > void Warn(object message); > } > > public static class LogManager > { > static LogManager() > { > XmlConfigurator.Configure( new > System.IO.FileInfo("c:/logger.xml")) ; > } > > public static ILog GetLogger(Type type) > { > MyLog log = new MyLog(log4net.LogManager.GetLogger(type) ); > return log; > } > } > > public class MyLog :ILog > { > private log4net.ILog _log; > > public MyLog(log4net.ILog log) > { > _log = log; > } > > #region ILog Members > > public bool IsDebugEnabled > { > get { return _log.IsDebugEnabled; } > } > > > public void Debug(object message) > { > _log.Debug(message); > } > > ... > } > > -- > View this message in context: > http://www.nabble.com/Wrapping-Log4Net-tp24551728p24551728.html > Sent from the Log4net - Users mailing list archive at Nabble.com. > >
