我在asp.net core 2.0中实现 log4net AdoNetAppender,但我猜它不支持。我已经在核心 2.0 中实现了 log4net RollingFileAppender,它使用 log4.net 配置成功运行。那么,如果 log4net AdoNetAppender 在 core 2.0 中不支持,还有其他方法可以在 core 2.0 中将日志插入到 sql 数据库中吗?
谢谢
我在asp.net core 2.0中实现 log4net AdoNetAppender,但我猜它不支持。我已经在核心 2.0 中实现了 log4net RollingFileAppender,它使用 log4.net 配置成功运行。那么,如果 log4net AdoNetAppender 在 core 2.0 中不支持,还有其他方法可以在 core 2.0 中将日志插入到 sql 数据库中吗?
谢谢
我遇到了同样的问题并在.net核心解决方案中使用这个nuget包解决了
https://www.nuget.org/packages/MicroKnights.Log4NetAdoNetAppender
您可以找到有关如何设置的更多信息
我有同样的问题。我已通过以下方式修复它:
使用附加程序将log4net.config.xml文件添加到 ASP.NET Core 项目。在AdoNetAppender的这个文件中,您可以指定connectionString
orconnectionStringName
但它没有意义,因为连接将是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()
调用。