2017-10-10 105 views
3

我在执行log4net AdoNetAppenderasp.net核心2.0,但我想它不支持。我已经实施了log4net RollingFileAppender在核心2.0 &它使用log4.net配置成功工作。因此,如果log4net AdoNetAppender在核心2.0中不支持,是否有任何其他方式在核心2.0中插入日志到sql数据库?log4net不支持.Net核心2.0中的AdoNetAppender?

谢谢

回答

-1

我有同样的问题。我已通过以下方式修复了它:

log4net.config.xml文件添加到带有appender的ASP.NET Core项目。在这个文件中AdoNetAppender您可以指定connectionStringconnectionStringName但它没有意义,因为连接将是null

因此,连接字符串添加到appsettings.json代替

"ConnectionStrings": { 
    "Log": "Data Source=localhost\\SQLEXPRESS;Initial Catalog=Log.Database;User ID=sa;Password=;MultipleActiveResultSets=True" 
} 

然后配置

ILoggerRepository logRepository = log4net.LogManager.GetRepository(Assembly.GetExecutingAssembly()); 
XmlConfigurator.Configure(logRepository, new FileInfo("log4net.config"));\ 

,并指定连接字符串手动

ILog _databaseLogger = log4net.LogManager.GetLogger("DBLogger"); 
var repository = _databaseLogger?.Logger.Repository; 
if (repository != null) 
{ 
    _adoAppender = repository.GetAppenders() 
     .FirstOrDefault(a => a is AdoNetAppender) as AdoNetAppender; 

    if (_adoAppender != null && string.IsNullOrEmpty(_adoAppender.ConnectionStringName)) 
    { 
     _adoAppender.ConnectionString = "some connection string from appsettings.json"; 
     _adoAppender.ActivateOptions(); 
    } 
} 

ActivateOptions()呼吁重新初始化appende河

+0

log4ne t.Appender.AdoNetAppender目前在.net core 2.0中不受支持。 – prashant

+0

@prashant你在说什么?我在项目中使用这个代码,目标为.netcoreapp2.0,但当然包的log4net的目标是461.一切正常工作,该解决方案 – Marusyk

-1

我面临着同样的问题,并在.NET核心解决方案采用这种NuGet包解决

https://www.nuget.org/packages/MicroKnights.Log4NetAdoNetAppender

您可以找到有关如何设置这对

https://github.com/microknights/Log4NetAdoNetAppender

更多信息其他选项可以参考https://svn.apache.org/repos/asf/logging/log4net/tags/log4net-1_2_9/src/Appender/AdoNetAppender.cs

+0

使用三维派对工具使用三维派对工具 –

+0

@ Pr.Dumbledor它的答案解决了Vishal面临的问题。我也提供了其他选项。 – prashant