You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-user@logging.apache.org by si <ss...@gmail.com> on 2007/10/09 08:31:51 UTC
Try XmlConfigurator.Configure() if logging is not working
Greetings,
Just spent a few hours struggling to understand why our logging stopped working,
having found the solution, thought I'd post here so it may help others.
We have a log factory which produces log4net.ILog objects, which is really
just a shortcut to the standard approach you see in most examples.
So in our framework assembly we have:
/// <summary>
/// Create log whose name is the calling methods class name.
/// </summary>
/// <returns>Log ready for work.</returns>
/// <remarks>
/// <para>
/// Configures the log repository if it hasn't been configured before.
/// </para>
/// <para>
/// Creates a debug log message right after getting the logger, this follows
/// the log4net recommendation to log first message as early as possible.
/// </para>
/// </remarks>
public static ILog Create()
{
ILog log;
MethodBase method;
method = new StackTrace().GetFrame(1).GetMethod();
log = log4net.LogManager.GetLogger(method.DeclaringType);
if (log4net.LogManager.GetRepository().Configured == false)
{
log4net.Config.XmlConfigurator.Configure();
log.Debug("XmlConfigurator now configured");
}
log.DebugFormat(CultureInfo.InvariantCulture, "Logging {0}",
log.Logger.Name);
return log;
}
The new code was the test for "if (...Configured == false)" and then configure.
For some reason, which I haven't been able to determine, as part of a
restructure of our projects and solutions, assemblies other than the
framework assembly wouldn't start logging until XmlConfigurator.Configure()
was called.
So it was working without the call to Configure(), but when I created new
solutions/projects with the new structure, it stopped working.
I couldn't see any differences in the AssemblyInfo.cs on either the framework
assembly or the other assemblies, but either way, I'm now back in business!
Hope that saves someone a few hours of their life :)
cheers
si