2016-11-30 7 views
0

2016-11-30 15: 43: 09,3060 DEBUG 20 Company.Product.LoggerDataFilter [UOW: 583ee57782fe0140c6dfbfd8] [ДП: 0] Создание DeviceDataTransformationRequest для регистратора [D: 4E3239200C5032593D004100 ].logstash продолжают соответствовать поле в сообщении

% {TIMESTAMP_ISO8601: временная метка}% {LOGLEVEL: LogLevel} \ S +% {INT: ThreadId} % {ДАННЫЕ: loggerName}% {UOW}% {DATAPACKET}% {GREEDYDATA: сообщение} % {DeviceId}

выход, который

{ 
    "timestamp": [ 
    "2016-11-30 15:43:09.3060" 
    ], 
    "loglevel": [ 
    "DEBUG" 
    ], 
    "threadId": [ 
    "20" 
    ], 
    "loggerName": [ 
    "Tts.IoT.DataLogger.Etl.Core.Filters.LoggerDataFilter" 
    ], 
    "correlationId": [ 
    "583ee57782fe0140c6dfbfd8" 
    ], 
    "datapacket": [ 
    "0" 
    ], 
    "message": [ 
    "Creating DeviceDataTransformationRequest for logger" 
    ], 
    "deviceId": [ 
    "4E3239200C5032593D004100" 
    ] 
} 

это хорошо - КРОМЕ - сообщение теперь отсутствует свойство DeviceId, который я извлек. Я хочу, чтобы они оба - как отдельное поле и все еще сохраняли его в сообщении.

Вы можете это сделать?

(На стороне записки ... как же структурировано логирования serilog помощь в связи с этим?)

+0

На данный момент 'DEVICEID' появляется в' сообщении'? – Kulasangar

+0

Да, сравните результат «сообщения» с исходным сообщением ([D: 4E32 ...]) является DEVICEID (у меня есть собственный шаблон Grok для этого) – lapsus

ответ

0

Как насчет попробовать изменить его

% {GREEDYDATA: сообщение}% {DeviceId}

в

%{GREEDYDATA:testmessage} %{DEVICEID}
затем добавить поле

mutate { 
    add_field => { 
    "message" => "%{testmessage} %{DEVICEID}" 
    } 
    remove_field => ["testmessage"] 
}