log4net AdoNetAppender in .Net core 2.0 not supported?

天大地大妈咪最大 提交于 2019-12-05 08:06:51

I faced the same issue and solved using this nuget package in .net core solution

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

You can find more information about how to set this up on

https://github.com/microknights/Log4NetAdoNetAppender

Other option could be referring to the implementation in https://svn.apache.org/repos/asf/logging/log4net/tags/log4net-1_2_9/src/Appender/AdoNetAppender.cs

I had the same problem. I've fixed it in the following way:

Add log4net.config.xml file to the ASP.NET Core project with appenders. In this file for AdoNetAppender you can specify connectionString or connectionStringName but it doesn't make sense because the connection will be null.

So, add connection string to appsettings.json instead

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

Then configure

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

and assign connection string manually

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();
    }
}

The ActivateOptions() calls for reinitialize the appender.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!