簡體   English   中英

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

[英]log4net AdoNetAppender in .Net core 2.0 not supported?

我正在asp.net core 2.0中實現log4net AdoNetAppender ,但我猜它不支持。 我已經在核心2.0中實現了log4net RollingFileAppender ,它使用log4.net config成功運行。 那么,如果log4net AdoNetAppender在核心2.0中不支持,還有其他方法可以將日志插入到核心2.0中的sql數據庫嗎?

謝謝

我遇到了同樣的問題並解決了在.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中的實現

我有同樣的問題。 我已通過以下方式修復它:

使用appender將log4net.config.xml文件添加到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()調用重新初始化appender。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM