如何添加目标以将日志发送到我的Elasticsearch服务器?理想情况下,我希望在WCF应用程序中有两个 errorLog ,其中一个向SQL发送数据,另一个向Elasticsearch发送数据。这是一个临时解决方案,直到我们关闭SQL端点。
这是我目前拥有的:
web.config
<elmah>
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="ErrorLog"/>
<errorLog type="My.Namespace.ElasticsearchErrorLog, My.Namespace" indexName="Elmah" />
<security allowRemoteAccess="false"/>
</elmah>
ElasticsearchErrorLog.cs
public class ElasticsearchErrorLog : Elmah.ErrorLog
{
public ElasticsearchErrorLog(IDictionary config)
{
}
public override ErrorLogEntry GetError(string id)
{
throw new NotImplementedException();
}
public override int GetErrors(int pageIndex, int pageSize, IList errorEntryList)
{
throw new NotImplementedException();
}
public override string Log(Error error)
{
Logger.ElmahInstance.Error(error.Exception, "Something went wrong {Message} ...", error.Message);
return Guid.NewGuid().ToString();
}
}
有什么想法吗?
答案 0 :(得分:0)
ELMAH不支持使用web.config
写入多个错误日志。话虽这么说,但有一个小技巧可让您做到。我在这里使用它来登录到SQL Server和elmah.io,但是在您的情况下,方法将类似:
Logging to multiple ELMAH logs
对于您而言,您可以在ErrorLog_Logged
方法内手动登录Elasticsearch。
答案 1 :(得分:0)
使用Nlog将您的日志存储到elasticsearch。请找到以下链接以供参考。
https://www.nuget.org/packages/NLog.Targets.ElasticSearch/
让我知道您是否仍然遇到任何问题。