不支持.Net core 2.0中的log4net AdoNetAppender?

Vis*_*l G 6 c# adonetappender log4net-appender asp.net-core-2.0

我执行log4net的AdoNetAppenderasp.net 2.0核心,但我想它是不支持.我已经在核心2.0中实现了log4net RollingFileAppender,它使用log4.net config成功运行.那么,如果log4net AdoNetAppender在核心2.0中不支持,有没有其他方法将日志插入到核心2.0中的sql数据库?

谢谢

pra*_*ant 5

我遇到了同样的问题,并在.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中的实现

  • @ Pr.Dumbledor它的答案解决了Vishal面临的问题。我也给了其他选择。 (5认同)
  • 使用3d派对工具使用3d派对工具 (2认同)

Rom*_*syk 0

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

使用附加程序将log4net.config.xml文件添加到 ASP.NET Core 项目。在此AdoNetAppender文件中,您可以指定connectionStringorconnectionStringName但它没有意义,因为连接将为null.

因此,请将连接字符串添加到appsettings.json

"ConnectionStrings": {
   "Log": "Data Source=localhost\\SQLEXPRESS;Initial Catalog=Log.Database;User ID=sa;Password=;MultipleActiveResultSets=True"
}
Run Code Online (Sandbox Code Playgroud)

然后配置

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

并手动分配连接字符串

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

ActivateOptions()重新初始化追加器的调用。