MCPcopy Index your code
hub / github.com/getsentry/sentry-javascript / onPinoStart

Function onPinoStart

packages/node-core/src/integrations/pino.ts:132–196  ·  view source on GitHub ↗
(self: Pino, args: PinoHookArgs, result: PinoResult)

Source from the content-addressed store, hash-verified

130 const integratedChannel = diagnosticsChannel.tracingChannel('pino_asJson');
131
132 function onPinoStart(self: Pino, args: PinoHookArgs, result: PinoResult): void {
133 if (!shouldTrackLogger(self)) {
134 return;
135 }
136
137 const resultObj = stripIgnoredFields(result);
138
139 const [captureObj, message, levelNumber] = args;
140 const level = self?.levels?.labels?.[levelNumber] || 'info';
141 const messageKey = getPinoKey(self, 'pino.messageKey', 'msg');
142 const logMessage = message || (resultObj?.[messageKey] as string | undefined) || '';
143
144 if (enableLogs && options.log.levels.includes(level)) {
145 const attributes: Record<string, unknown> = {
146 ...resultObj,
147 'sentry.origin': 'auto.log.pino',
148 'pino.logger.level': levelNumber,
149 };
150
151 _INTERNAL_captureLog({ level, message: logMessage, attributes });
152 }
153
154 if (options.error.levels.includes(level)) {
155 const errorKey = getPinoKey(self, 'pino.errorKey', 'err');
156
157 // Attach the log message and remaining log fields (e.g. child logger
158 // bindings, merge object fields) to the event. The serialized error is
159 // excluded since it is captured as the event exception itself.
160 const pinoContext: Record<string, unknown> = {};
161 for (const [key, value] of Object.entries(resultObj)) {
162 if (key !== errorKey && key !== messageKey) {
163 pinoContext[key] = value;
164 }
165 }
166 if (logMessage) {
167 pinoContext[messageKey] = logMessage;
168 }
169
170 const captureContext = {
171 level: severityLevelFromString(level),
172 contexts: { pino: pinoContext },
173 };
174
175 withScope(scope => {
176 scope.addEventProcessor(event => {
177 event.logger = 'pino';
178
179 addExceptionMechanism(event, {
180 handled: options.error.handled,
181 type: 'auto.log.pino',
182 });
183
184 return event;
185 });
186
187 const error = captureObj[errorKey];
188 if (error) {
189 captureException(error, captureContext);

Callers 1

pino.tsFile · 0.85

Calls 11

_INTERNAL_captureLogFunction · 0.90
severityLevelFromStringFunction · 0.90
withScopeFunction · 0.90
addExceptionMechanismFunction · 0.90
captureExceptionFunction · 0.90
captureMessageFunction · 0.90
shouldTrackLoggerFunction · 0.85
stripIgnoredFieldsFunction · 0.85
getPinoKeyFunction · 0.85
addEventProcessorMethod · 0.80
entriesMethod · 0.65

Tested by

no test coverage detected