|
From: <fab...@us...> - 2010-08-09 11:33:26
|
Revision: 5129
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5129&view=rev
Author: fabiomaulo
Date: 2010-08-09 11:33:20 +0000 (Mon, 09 Aug 2010)
Log Message:
-----------
bye bye log4net reference :(
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Logging.cs
trunk/nhibernate/src/NHibernate/NHibernate.build
trunk/nhibernate/src/NHibernate/NHibernate.csproj
Modified: trunk/nhibernate/src/NHibernate/Logging.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Logging.cs 2010-08-08 23:08:04 UTC (rev 5128)
+++ trunk/nhibernate/src/NHibernate/Logging.cs 2010-08-09 11:33:20 UTC (rev 5129)
@@ -1,6 +1,5 @@
using System;
using System.Linq.Expressions;
-using log4net;
namespace NHibernate
{
@@ -31,38 +30,73 @@
void WarnFormat(string format, params object[] args);
}
+ public interface ILoggerFactory
+ {
+ ILogger LoggerFor(string keyName);
+ ILogger LoggerFor(System.Type type);
+ }
+
public class LogggerProvider
{
- private readonly Func<string, ILogger> loggerByKeyGetter;
- private readonly Func<System.Type, ILogger> loggerByTypeGetter;
+ private readonly ILoggerFactory loggerFactory;
private static LogggerProvider instance;
+
static LogggerProvider()
{
- SetLoggersFactoryDelegates(key => new Log4NetLogger(LogManager.GetLogger(key)), type => new Log4NetLogger(LogManager.GetLogger(type)));
+ SetLoggersFactory(new Log4NetLoggerFactory());
}
- public static void SetLoggersFactoryDelegates(Func<string, ILogger> loggerByKeyGetter, Func<System.Type, ILogger> loggerByTypeGetter)
+ public static void SetLoggersFactory(ILoggerFactory loggerFactory)
{
- instance = new LogggerProvider(loggerByKeyGetter, loggerByTypeGetter);
+ instance = new LogggerProvider(loggerFactory);
}
- private LogggerProvider(Func<string, ILogger> loggerByKeyGetter, Func<System.Type, ILogger> loggerByTypeGetter)
+ private LogggerProvider(ILoggerFactory loggerFactory)
{
- this.loggerByKeyGetter = loggerByKeyGetter;
- this.loggerByTypeGetter = loggerByTypeGetter;
+ this.loggerFactory = loggerFactory;
}
public static ILogger LoggerFor(string keyName)
{
- return instance.loggerByKeyGetter(keyName);
+ return instance.loggerFactory.LoggerFor(keyName);
}
public static ILogger LoggerFor(System.Type type)
{
- return instance.loggerByTypeGetter(type);
+ return instance.loggerFactory.LoggerFor(type);
}
}
+ public class Log4NetLoggerFactory: ILoggerFactory
+ {
+ private static readonly System.Type LogManagerType = System.Type.GetType("log4net.LogManager, log4net");
+ private static readonly Func<string, object> GetLoggerByNameDelegate;
+ private static readonly Func<System.Type, object> GetLoggerByTypeDelegate;
+ static Log4NetLoggerFactory()
+ {
+ GetLoggerByNameDelegate = GetGetLoggerMethodCall<string>();
+ GetLoggerByTypeDelegate = GetGetLoggerMethodCall<System.Type>();
+ }
+ public ILogger LoggerFor(string keyName)
+ {
+ return new Log4NetLogger(GetLoggerByNameDelegate(keyName));
+ }
+
+ public ILogger LoggerFor(System.Type type)
+ {
+ return new Log4NetLogger(GetLoggerByTypeDelegate(type));
+ }
+
+ private static Func<TParameter, object> GetGetLoggerMethodCall<TParameter>()
+ {
+ var method = LogManagerType.GetMethod("GetLogger", new[] { typeof(TParameter) });
+ ParameterExpression resultValue;
+ ParameterExpression keyParam = Expression.Parameter(typeof(TParameter), "key");
+ MethodCallExpression methodCall = Expression.Call(null, method, new Expression[] { resultValue = keyParam });
+ return Expression.Lambda<Func<TParameter, object>>(methodCall, new[] { resultValue }).Compile();
+ }
+ }
+
public class Log4NetLogger: ILogger
{
private static readonly System.Type ILogType = System.Type.GetType("log4net.ILog, log4net");
Modified: trunk/nhibernate/src/NHibernate/NHibernate.build
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.build 2010-08-08 23:08:04 UTC (rev 5128)
+++ trunk/nhibernate/src/NHibernate/NHibernate.build 2010-08-09 11:33:20 UTC (rev 5129)
@@ -23,7 +23,6 @@
<include name="System.Data.OracleClient" />
<include name="System.Web.dll" />
<include name="Iesi.Collections.dll" />
- <include name="log4net.dll" />
<include name="Antlr3.Runtime.dll" />
<include name="Remotion.dll" />
<include name="Remotion.Data.Linq.dll" />
Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-08 23:08:04 UTC (rev 5128)
+++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2010-08-09 11:33:20 UTC (rev 5129)
@@ -62,10 +62,6 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\net\3.5\Iesi.Collections.dll</HintPath>
</Reference>
- <Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\..\lib\net\3.5\log4net.dll</HintPath>
- </Reference>
<Reference Include="Remotion.Data.Linq, Version=1.13.41.2, Culture=neutral, PublicKeyToken=cab60358ab4081ea">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\lib\net\3.5\Remotion.Data.Linq.dll</HintPath>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|