logging-log4net-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sascha Hamacher <saschahamac...@arcor.de>
Subject Dot in logger name is causing log4net to throw exception
Date Wed, 25 Mar 2009 18:36:56 GMT
first of all thank you for the very good logging framework.
While working with Log4Net 1.2.10 I experienced the following problem:

When the logger name starts with a ".", LogManager.GetLogger fails with 
the following exception:

System.ArgumentOutOfRangeException was unhandled
 Message="Index was out of range. Must be non-negative and less than the 
size of the collection.\r\nParameter name: startIndex"
      at System.String.LastIndexOf(Char value, Int32 startIndex, Int32 
      at System.String.LastIndexOf(Char value, Int32 startIndex)
      at log4net.Repository.Hierarchy.Hierarchy.UpdateParents(Logger log)
      at log4net.Repository.Hierarchy.Hierarchy.GetLogger(String name, 
ILoggerFactory factory)
      at log4net.Repository.Hierarchy.Hierarchy.GetLogger(String name)
      at log4net.Core.LoggerManager.GetLogger(Assembly 
repositoryAssembly, String name)
      at log4net.LogManager.GetLogger(Assembly repositoryAssembly, 
String name)
      at log4net.LogManager.GetLogger(String name)
      at ReproCaseLog4Net.Program.Main(String[] args) in 
C:\Users\hamacs01\Documents\Visual Studio 
2008\Projects\ReproCaseLog4Net\ReproCaseLog4Net\Program.cs:line 20
      at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] 
      at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence 
assemblySecurity, String[] args)
      at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
      at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
      at System.Threading.ExecutionContext.Run(ExecutionContext 
executionContext, ContextCallback callback, Object state)
      at System.Threading.ThreadHelper.ThreadStart()

The following code of a simple command line program reproduces the 
problem for me:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net.Appender;
using log4net.Config;
using log4net;
using log4net.Layout;

namespace ReproCaseLog4Net
 class Program
   static void Main( string[] args )
     BasicConfigurator.Configure( new ConsoleAppender()
       Layout = new SimpleLayout()
     } );
     ILog log = LogManager.GetLogger( ".MyLogger" ); // <<--- the 
exception is thrown here
     log.Error( "ErrorMessage" );

Best regards,
Sascha Hamacher

View raw message