꽤 일반적인 질문이라고 가정합니다. 서버 정보를 EventFlow 이벤트에 쉽게 추가하는 방법은 무엇입니까?EventFlow - 원본 서버 정보를 첨부하기 위해 사용자 지정 필터 만들기
시나리오에 따라 고유 한 환경의 EventFlowConfig.json이있는 응용 프로그램을 배포하지만 팜의 각 서버는 동일한 json 파일을 가져옵니다. 그래서 ... 팜의 어느 서버에서 ElasticSearch로 이벤트를 보냈는지 어떻게 알 수 있습니까?
하나의 옵션은 .net을 사용하여 servername을 가져 와서 열로 보내면 모든 이벤트에 서버 이름을 추가해야합니다. 약간 과장된 것처럼 보이지만 일을 할 것입니다. 이 이벤트를 실제로 코드화하는 것 외에도 쉬운 방법이 있기를 바랬습니다. 시간에 대한
감사합니다, 그렉
편집 4 - 캐롤이 날까지이 작업을 예를 얻을 수 있도록 실행 좋았어요 당신에게 카롤 감사합니다! 확장으로 사용자 정의 필터를 만들 추가하려고 : 우리는 사용자 정의 필터 공장 우리는 다음 두 번째 새로운 클래스를 만들 필요가 IFilter가 인터페이스를 구현해야
- . 공장에서 건강 모니터를 전달하기 위해 우리는 생성자를 사용했다.
- 는
그런 다음 우리 EventFlowConfig.json의 확장 영역에서 사용자 정의 필터를 참조 데이터 (eventData.AddPayloadProperty)를 추가 할 우리 지역으로 평가 기능을 사용합니다.
a. 카테고리는 filterFactoryb입니다. 유형은 클래스 이름입니다.
c. 예를 들어 (필터 팩토리 이름을 'MyCustomFilterFactory'로 가정하면) : "My.Application.Logging.MyCustomFilterFactory, My.Application.Assembly.WhereCustomFilterAndItsFactoreLive"
C# 코드가 살고 Microsoft.Extensions.Configuration에 대한 참조를 추가합니다.
을 그럼 당신은 당신이 여기에서 우리는 글로벌 필터
작업을 사용하고, 필요 어디서나 사용자 정의 필터를 참조 할 수 있습니다 예 :
EventFlow 구성에 그리고3210class CustomGlobalFilter : IFilter
{
private IHealthReporter HealthReporter;
private string MachineName;
public CustomGlobalFilter(string ServerName, IHealthReporter HealthReporter)
{
MachineName = ServerName;
this.HealthReporter = HealthReporter;
}
FilterResult IFilter.Evaluate(EventData eventData)
{
eventData.AddPayloadProperty("ServerName", MachineName, HealthReporter, "CustomGlobalFilter");
return FilterResult.KeepEvent;
}
}
class CustomGlobalFilterFactory : IPipelineItemFactory<CustomGlobalFilter>
{
public CustomGlobalFilter CreateItem(IConfiguration configuration, IHealthReporter healthReporter)
{
CustomGlobalFilter GlobalFilter = new CustomGlobalFilter(System.Environment.MachineName, healthReporter);
return GlobalFilter;
}
}
:
"filters": [
{
"type": "drop",
"include": "Level == Verbose"
},
{
"type": "CustomGlobalFilter"
}
],
...
"extensions": [
{
"category": "filterFactory",
"type": "CustomGlobalFilter",
"qualifiedTypeName": "My.Company.Presentation.App.CustomGlobalFilter, My.Company.Presentation.App"
}
감사합니다, 그렉
작업 예제에서 EventFlow 구성의 잘못된 QualifiedTypeName을 보여 주면됩니다. 다음과 같아야합니다. "qualifiedTypeName": "My.Company.Presentation.App.CustomGlobalFilter ** Factory **, My.Company.Presentation.App" – James