小编moo*_*aka的帖子

Ninject.Extensions.Logging.Log4net意外行为

我通过Ninject(2.2.1.4)Extensions.Logging.Log4net(2.2.0.4)使用Log4Net(1.2.10)时遇到问题,通过NuGet安装.

当我直接访问Log4Net时:

var logger = log4net.LogManager.GetLogger("Log4NetLoggerTest");
logger.Debug("foo { bar");
Run Code Online (Sandbox Code Playgroud)

结果是:

2011-08-29 10:02:02,071 [9] DEBUG Log4NetLoggerTest foo { bar
Run Code Online (Sandbox Code Playgroud)

但是,当通过Ninject访问记录器时:

using (IKernel kernel = new StandardKernel())
{
    var ninjectLogger = kernel.Get<NinjectLoggerTest>();
    ninjectLogger.Log.Debug("foo { bar");
}
Run Code Online (Sandbox Code Playgroud)

NinjectLoggerTest就是这样的:

using Ninject.Extensions.Logging;
namespace TestApp
{
    public class NinjectLoggerTest
    {
        public NinjectLoggerTest(ILogger log)
        {
            Log = log;
        }
        public ILogger Log;
    }
}
Run Code Online (Sandbox Code Playgroud)

出乎意料的是,结果是:

2011-08-29 10:29:27,114 [10] DEBUG TestApp.NinjectLoggerTest <log4net.Error>Exception during StringFormat: Input string was not in a correct format. <format>foo { bar</format><args>{}</args></log4net.Error>
Run Code Online (Sandbox Code Playgroud)

更糟糕的是,当使用ILogger的Trace方法时,mscorlib.dll中存在类型'System.FormatException'的第一次机会异常

难道我做错了什么?我该如何解决这个问题?

TIA

log4net ninject-2 ninject-extensions nuget-package c#-4.0

6
推荐指数
1
解决办法
4178
查看次数