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 Ron Grabowski <ro...@yahoo.com> on 2005/05/27 19:18:18 UTC

Re: How to use ErrorHandler

A much simpler way to capture log4net's internal debug messages is to
add this snippet of code to the <configuration> node of your app.config
or web.config:

<!-- taken from DotNet.Commons.Logging.Impl.SimplerLogger.cs -->
<system.diagnostics>
 <trace>
  <listeners>
   <add name="textWriterTraceListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="C:\\log4net.txt" />
  </listeners>
 </trace>
</system.diagnostics>

--- Ron Grabowski <ro...@yahoo.com> wrote:
> If you download and install this free program:
> 
>  http://www.sysinternals.com/ntw2k/freeware/debugview.shtml
> 
> And setup log4net to run in Debug mode:
> 
> <appSettings>
>  <add key="log4net.Internal.Debug" value="true" />
> </appSettings>
> 
> You should be able to see your Appenders being initialized and/or the
> exceptions that are caused by incorrectly configured Appenders.
> 
> This is how I log that information to a file in my Asp.Net
> application:
> 
> if (log4netIsInDebugMode() == true)
> {
> 	// if log4net is in debug mode (useful for discovering why appenders
> are not working), it will 
> 	// print out internal messages and errors to the System.Console and
> to
> System.Diagnostics.Trace;
> 	// the code below will capture log4net output and attempt to write
> it
> to a known writeable
> 	// directory;
> 	string physicalPathLogFile =
> Path.Combine(System.Web.HttpRuntime.AppDomainAppPath,
> LOG4NET_LOG_FILE);
> 
> 	try
> 	{
> 		FileStream fileStream = new FileStream(physicalPathLogFile,
> FileMode.Create, FileAccess.Write );
> 		if (fileStream != null && fileStream.CanWrite)
> 		{
> 			// this doesn't affect Trace.axd becuase Trace.axd is from
> System.Web.TraceContext
> 			// System.Diagnostics.Trace.Listeners.Clear();
> 			System.Diagnostics.Trace.Listeners.Add(new
> TextWriterTraceListener(fileStream));
> 		}
> 	}
> 	catch(SystemException ex)
> 	{
> 		// System.UnauthorizedAccessException - The exception that is
> thrown
> when the operating system denies access because of an I/O error or a
> specific type of security error.
> 
> 		// log the message to a location that was the cause for the
> exception
> ???
> 		System.Diagnostics.Trace.Write("log4net", "Unable to create log4net
> logger at [" + physicalPathLogFile + "]. Exception: " +
> ex.ToString());
> 	}
> }
> 	
> log4net.Config.DOMConfigurator.Configure();
> 
> // make sure the complete log4net startup log appears
> System.Diagnostics.Trace.Flush();
> 
> - Ron