2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Haec continuatio prioris articuli "Elasticsearch: Node.js ECS Logging - Pino"Continuatio. Priorem articulum continuamus loqui de usura in sarcina Winston ad scopum" Node.js Applicatio generat ECS ut par diei.Hoc Node.js sarcina estwinston loggerFormattor provisus, cum Schema commune elasticum (ECS) logging compatitur.simulFilebeat Mittens, omnia tigna ab uno loco in Stack elastica monitori potes. Support winston 3.x version >=3.3.3.
- npm install @elastic/ecs-winston-format
- npm install winston
winston-logging.js
- const winston = require('winston');
- const { ecsFormat } = require('@elastic/ecs-winston-format');
-
- const logger = winston.createLogger({
- format: ecsFormat(/* options */), // 1
- transports: [
- new winston.transports.Console()
- ]
- });
-
- logger.info('hi');
- logger.error('oops there is a problem', { err: new Error('boom') });
Effectus currit in codice supra scriptum est:
Filebeat 7.16+
filebeat.yml
- filebeat.inputs:
- - type: filestream # 1
- paths: /path/to/logs.json
- parsers:
- - ndjson:
- overwrite_keys: true # 2
- add_error_key: true # 3
- expand_keys: true # 4
-
- processors: // 5
- - add_host_metadata: ~
- - add_cloud_metadata: ~
- - add_docker_metadata: ~
- - add_kubernetes_metadata: ~
Filebeat < 7.16
filebeat.yml
- filebeat.inputs:
- - type: log
- paths: /path/to/logs.json
- json.keys_under_root: true
- json.overwrite_keys: true
- json.add_error_key: true
- json.expand_keys: true
-
- processors:
- - add_host_metadata: ~
- - add_cloud_metadata: ~
- - add_docker_metadata: ~
- - add_kubernetes_metadata: ~
Pro maiori, vide Filebeat reference。
winston-logging.js
- const winston = require('winston');
- const { ecsFormat } = require('@elastic/ecs-winston-format');
-
- const logger = winston.createLogger({
- level: 'info',
- format: ecsFormat(/* options */), // 1
- transports: [
- new winston.transports.Console()
- ]
- });
-
- logger.info('hi');
- logger.error('oops there is a problem', { foo: 'bar' });
node winston-logging.js | jq .
Curre hoc scriptum (available athic "adeptus) producet log output similes supra.
Formatter ad serializing notitias in JSON responsabilis est, ideo addere non debes json Formattor.Accedit quod formatter indicationem notionis automatice generat, ideo addere non debesindicatione Formattor.
Per defaltam formatter erratum convertit in instantia metafield erroris ECSError agri .Exempli gratiaexemplum:
winston-logging.js
- const winston = require('winston');
- const { ecsFormat } = require('@elastic/ecs-winston-format');
- const logger = winston.createLogger({
- format: ecsFormat(),
- transports: [
- new winston.transports.Console()
- ]
- });
-
- const myErr = new Error('boom');
- logger.info('oops', { err: myErr });
Specialis pertractatio metafield errantis per convertErr debilitari potest: optio falsa:
winston-logging.js
- const winston = require('winston');
- const { ecsFormat } = require('@elastic/ecs-winston-format');
- const logger = winston.createLogger({
- format: ecsFormat({convertErr: false} ),
- transports: [
- new winston.transports.Console()
- ]
- });
-
- const myErr = new Error('boom');
- logger.info('oops', { err: myErr });
Using the convertReqRes: vera optio, formatter sponte convertet Node.js nucleum cum transiit ut req et res metafields respectively. petitio etresponsio objectum.
winston-logging.js
- const http = require('http');
- const winston = require('winston');
- const { ecsFormat } = require('@elastic/ecs-winston-format');
-
- const logger = winston.createLogger({
- level: 'info',
- format: ecsFormat({ convertReqRes: true }), // 1
- transports: [
- new winston.transports.Console()
- ]
- });
-
- const server = http.createServer(handler);
- server.listen(3000, () => {
- logger.info('listening at http://localhost:3000')
- });
-
- function handler (req, res) {
- res.setHeader('Foo', 'Bar');
- res.end('ok');
- logger.info('handled request', { req, res }); // 2
- }
Hoc erit utere ECS HTTP agri Generat index petitionem ac responsionem notitia continentur.Exempli gratiaexemplum:
Superius opus est accedere http://localhost:3000 Tantum ergo diei indicium supra ostensum est videre potes.
hoc ECS cum formatter iniuriarumElastica APM integratur.Si usus application est: NodeNode.js Elastica APM Agent, adduntur complura agri ad indicem tabularum ad APM officium vel vestigium et notitias referendas:
Exempli gratia, currere exempla/http-with-elastic-apm.js etCrispum -i localhost: MMM/ Index index continens sequenti contenta prodit:
- % node examples/http-with-elastic-apm.js | jq .
- ...
- "service.name": "http-with-elastic-apm",
- "service.version": "1.4.0",
- "service.environment": "development",
- "event.dataset": "http-with-elastic-apm"
- "trace.id": "7fd75f0f33ff49aba85d060b46dcad7e",
- "transaction.id": "6c97c7c1b468fa05"
- }
Hae IDs aequant notitias sequi notitias ab APM agente relatas.
Integratio cum APM Elastica explicite debilitata esse potest per apmIntegration: optio falsa, exempli gratia:
- const logger = winston.createLogger({
- format: ecsFormat({ apmIntegration: false }),
- // ...
- })
ecs-logging speciem Commendatur ut tres priores agri in indice index sit @timestamp, log.level, nuntius. Incipiens a versione 1.5.0, formator hanc commendationem non sequitur. Hoc fieri potest, sed novum obiectum requirit in ecsFields pro singulis tabulis. Cum ordinatio agrorum ecs-logionum ad promptitudinem sit et non interoperabilitatem afficit, perficiendi prioritizare placuit.
Facere formattrum pro winston, qui ECS logging format formatam emittit.Haec curatio estecsFields ([options]) etecsStringify([optiones]) una forma. Sequentia duo aequiparantur;
- const { ecsFormat, ecsFields, ecsStringify } = require('@elastic/ecs-winston-format');
- const winston = require('winston');
-
- const logger = winston.createLogger({
- format: ecsFormat(/* options */),
- // ...
- });
-
- const logger = winston.createLogger({
- format: winston.format.combine(
- ecsFields(/* options */),
- ecsStringify()
- ),
- // ...
- });
Formatorem crea pro Winston qui agros convertit in notitia explorationis obiecti ad ECS loging forma.
Facere formatorem pro winston ad stringendum/serialize tabulas logas ad JSON.
Hoc simile est cum logform.json(). Uterque sarcinis stabilis firmificans utuntur ad JSON generandum. Differentiae nonnullae: