我在執行log4net AdoNetAppender在asp.net核心2.0,但我想它不支持。我已經實施了log4net RollingFileAppender在覈心2.0 &它使用log4.net配置成功工作。因此,如果log4net AdoNetAppender在覈心2.0中不支持,是否有任何其他方式在覈心2.0中插入日誌到sql數據庫?log4net不支持.Net核心2.0中的AdoNetAppender?
謝謝
我在執行log4net AdoNetAppender在asp.net核心2.0,但我想它不支持。我已經實施了log4net RollingFileAppender在覈心2.0 &它使用log4.net配置成功工作。因此,如果log4net AdoNetAppender在覈心2.0中不支持,是否有任何其他方式在覈心2.0中插入日誌到sql數據庫?log4net不支持.Net核心2.0中的AdoNetAppender?
謝謝
我有同樣的問題。我已通過以下方式修復了它:
將log4net.config.xml文件添加到帶有appender的ASP.NET Core項目。在這個文件中AdoNetAppender您可以指定connectionString
或connectionStringName
但它沒有意義,因爲連接將是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河
我面臨着同樣的問題,並在.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面臨的問題。我也提供了其他選項。 – prashant
log4ne t.Appender.AdoNetAppender目前在.net core 2.0中不受支持。 – prashant
@prashant你在說什麼?我在項目中使用這個代碼,目標爲.netcoreapp2.0,但當然包的log4net的目標是461.一切正常工作,該解決方案 – Marusyk