Open tarunsinghh opened 2 weeks ago
You need to add the winston transport as well for this to work: https://www.npmjs.com/package/@opentelemetry/winston-transport
You need to add the winston transport as well for this to work: https://www.npmjs.com/package/@opentelemetry/winston-transport
Adding this giving more output but still spanId and traceId are not coming .
const { OpenTelemetryTransportV3 } = require('@opentelemetry/winston-transport'); transports: [new winston.transports.Console(), new OpenTelemetryTransportV3()
output : -
{"level":"info","message":"foobar"} { resource: { attributes: { 'service.name': 'unknown_service:C:\Program Files\nodejs\node.exe', 'telemetry.sdk.language': 'nodejs', 'telemetry.sdk.name': 'opentelemetry', 'telemetry.sdk.version': '1.25.0' } }, timestamp: 1718785914695000, traceId: undefined, spanId: undefined, traceFlags: undefined, severityText: 'info', severityNumber: 9, body: 'foobar', attributes: {} }
can you try removing the hook use, I haven't used hooks then also its working fine for me
yeah removed it and posted then only
registerInstrumentations({ instrumentations: [ new WinstonInstrumentation({ level:'info', / logHook: (record, span) => { // Add custom attributes or context to log records record.attributes['trace_id'] = span.spanContext().traceId; record.attributes['span_id'] = span.spanContext().spanId; }/ // See below for Winston instrumentation options. }), ], });
even mine isn't working wherein I have a library which uses opentelemetry and exposes a few things of it to the using application.
If I run tracing otherwise works fine for me.
In my tracing isn't working at all not sure why even though verbose logging shows express etc. all instrumented correctly. Also I am doing this in the library test file.
If anyone can help getting some console.error Trace { resource: {.....} }
at resource/detector.ts not sure why as all resources are showing correctly in the logs etc as well
Try to install the the winston transport @opentelemetry/winston-transport
.
It looks like an problem with dependecies for @opentelemetry/instrumentation-winston
.
This is package.json "dependencies": { "@opentelemetry/api": "1.4.1", "@opentelemetry/api-logs": "^0.52", "@opentelemetry/sdk-trace-node": "^1.25.0", "@opentelemetry/sdk-logs": "^0.52", "@opentelemetry/instrumentation-http": "^0.52.0", "@opentelemetry/instrumentation-express": "^0.40", "@opentelemetry/instrumentation-winston": "0.38", "@opentelemetry/core": "^1.25", "express": "^4.19", "axios": "^1.7", "winston": "^3.13" }
This is the real code in tracer.js
const { NodeTracerProvider } = require('@opentelemetry/sdk-trace-node'); const logsAPI = require('@opentelemetry/api-logs'); const { LoggerProvider, SimpleLogRecordProcessor, ConsoleLogRecordExporter, } = require('@opentelemetry/sdk-logs'); const { WinstonInstrumentation } = require('@opentelemetry/instrumentation-winston'); const { registerInstrumentations } = require('@opentelemetry/instrumentation');
const tracerProvider = new NodeTracerProvider(); tracerProvider.register();
// To start a logger, you first need to initialize the Logger provider. const loggerProvider = new LoggerProvider(); // Add a processor to export log record loggerProvider.addLogRecordProcessor( new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()) ); logsAPI.logs.setGlobalLoggerProvider(loggerProvider);
registerInstrumentations({ instrumentations: [ new WinstonInstrumentation({ level:'info', logHook: (record, span) => { // Add custom attributes or context to log records record.attributes['trace_id'] = span.spanContext().traceId; record.attributes['span_id'] = span.spanContext().spanId; } // See below for Winston instrumentation options. }), ], });
const winston = require('winston'); const logger = winston.createLogger({ level: "info", format: winston.format.json(),
}) logger.info('foobar'); // prints {"level":"info","message":"foobar"} no traceid keys
No opentelemetry trace ids are getting printed, I required this in some other file in server.js there also its not printing trace id.