【发布时间】:2019-02-24 15:52:54
【问题描述】:
NLog.Config 弹性搜索目标:
<target name="elasticWrapper" xsi:type="BufferingWrapper" flushTimeout="5000">
<target xsi:type="ElasticSearch"
name="elastic"
connectionStringName="ElasticUrl"
index="logs-${date:format=yyyy.MM.dd}"
documentType="logevent"
includeAllProperties="true"
layout="${message}">
</target>
</target>
弹性搜索目标的connectionstringname属性用于从appsettings.json中获取信息
appsettings.json 如下所示
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
},
"ConnectionStrings": {
"ElasticUrl": "http://XXXXXX-XXXXXX:9200"
}
}
.Net Core 项目中的 Program.cs 文件,如下所示
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
NLogBuilder.ConfigureNLog("nLog.config");
foreach (var setting in config.GetChildren().ToDictionary(x => x.Key, x => x.Value))
{
LogManager.Configuration.Variables[setting.Key] = setting.Value;
}
var logger = LogManager.GetCurrentClassLogger();
var host = WebHost.CreateDefaultBuilder(args)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseNLog()
.Build();
host.Run();
}
【问题讨论】:
-
你试过
ConnectionStrings:ElasticUrl而不是ElasticUrl吗?您是否尝试将ElasticUrl直接放在 config-root 中,而不是放在 ConnectionStrings-scope 中? -
@RolfKristensen :尝试了这两种配置,但索引仍然是在我的本地主机 ES 实例上创建的,而不是在远程机器 ES 实例上创建的。
标签: c# elasticsearch asp.net-core nlog