elastic / ecs-logging-nodejs

https://www.elastic.co/guide/en/ecs-logging/nodejs/master/intro.html
Apache License 2.0
68 stars 39 forks source link

Please don't delete info.level #173

Closed doanthai closed 8 months ago

doanthai commented 8 months ago

Hi, I just update version @elastic/ecs-winston-format from 1.3.1 to 1.5.0 and see an error about logging in console look like

[AsyncTestWinston] undefined 123 12/28/2023, 3:12:44 PM debug async

In old version, undefined is log level of message. When I check code, I see you delete info.level at bellow code:

info['log.level'] = info.level // Removing 'level' might cause trouble for downstream winston formatters // given that https://github.com/winstonjs/logform#info-objects says: // // > Every info must have at least the level and message properties: // // However info still has a info[Symbol.for('level')] for more reliable use. delete info.level info['ecs.version'] = version

Though have Symbol.for('level') but some other transports still read level from info. So can you don't delete level in info object.

trentm commented 8 months ago

@doanthai Thanks for the issue! I have a fix started.

redpanda commented 3 months ago

Hi @trentm,

I ran the basic winston example, and the field level is missing from the logs output in STDOUT. Is this expected? Thank you in advance for your answer.

branch: main

input

node packages/ecs-winston-format/examples/basic.js

output

{"@timestamp":"2024-06-18T12:44:09.359Z","ecs.version":"8.10.0","log.level":"info","message":"hi"} {"@timestamp":"2024-06-18T12:44:09.360Z","ecs.version":"8.10.0","foo":"bar","log.level":"warn","message":"look out"} {"@timestamp":"2024-06-18T12:44:09.360Z","ecs.version":"8.10.0","error":{"cause":"Error: the cause\n at Object. (/Users/jleger/Workspaces/work/ecs-logging-nodejs/packages/ecs-winston-format/examples/basic.js:43:40)\n at Module._compile (node:internal/modules/cjs/loader:1364:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)\n at Module.load (node:internal/modules/cjs/loader:1203:32)\n at Module._load (node:internal/modules/cjs/loader:1019:12)\n at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)\n at node:internal/main/run_main_module:28:49","code":42,"message":"boom","stack_trace":"Error: boom\n at Object. (/Users/jleger/Workspaces/work/ecs-logging-nodejs/packages/ecs-winston-format/examples/basic.js:43:13)\n at Module._compile (node:internal/modules/cjs/loader:1364:14)\n at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)\n at Module.load (node:internal/modules/cjs/loader:1203:32)\n at Module._load (node:internal/modules/cjs/loader:1019:12)\n at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:128:12)\n at node:internal/main/run_main_module:28:49","type":"Error"},"log.level":"error","message":"here is an exception boom"}