@microsoft/agents-a365-observability 0.1.0-preview.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +21 -0
- package/README.md +33 -0
- package/dist/cjs/ObservabilityBuilder.d.ts +101 -0
- package/dist/cjs/ObservabilityBuilder.d.ts.map +1 -0
- package/dist/cjs/ObservabilityBuilder.js +246 -0
- package/dist/cjs/ObservabilityBuilder.js.map +1 -0
- package/dist/cjs/ObservabilityManager.d.ts +29 -0
- package/dist/cjs/ObservabilityManager.d.ts.map +1 -0
- package/dist/cjs/ObservabilityManager.js +61 -0
- package/dist/cjs/ObservabilityManager.js.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.d.ts +20 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.d.ts.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.js +66 -0
- package/dist/cjs/configuration/ObservabilityConfiguration.js.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts +68 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.js +5 -0
- package/dist/cjs/configuration/ObservabilityConfigurationOptions.js.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts +19 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js +53 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +55 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js +5 -0
- package/dist/cjs/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
- package/dist/cjs/configuration/index.d.ts +16 -0
- package/dist/cjs/configuration/index.d.ts.map +1 -0
- package/dist/cjs/configuration/index.js +35 -0
- package/dist/cjs/configuration/index.js.map +1 -0
- package/dist/cjs/index.d.ts +17 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +67 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts +41 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.js +252 -0
- package/dist/cjs/tracing/PerRequestSpanProcessor.js.map +1 -0
- package/dist/cjs/tracing/constants.d.ts +108 -0
- package/dist/cjs/tracing/constants.d.ts.map +1 -0
- package/dist/cjs/tracing/constants.js +127 -0
- package/dist/cjs/tracing/constants.js.map +1 -0
- package/dist/cjs/tracing/context/parent-span-context.d.ts +37 -0
- package/dist/cjs/tracing/context/parent-span-context.d.ts.map +1 -0
- package/dist/cjs/tracing/context/parent-span-context.js +63 -0
- package/dist/cjs/tracing/context/parent-span-context.js.map +1 -0
- package/dist/cjs/tracing/context/token-context.d.ts +11 -0
- package/dist/cjs/tracing/context/token-context.d.ts.map +1 -0
- package/dist/cjs/tracing/context/token-context.js +29 -0
- package/dist/cjs/tracing/context/token-context.js.map +1 -0
- package/dist/cjs/tracing/contracts.d.ts +190 -0
- package/dist/cjs/tracing/contracts.d.ts.map +1 -0
- package/dist/cjs/tracing/contracts.js +44 -0
- package/dist/cjs/tracing/contracts.js.map +1 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts +53 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.js +385 -0
- package/dist/cjs/tracing/exporter/Agent365Exporter.js.map +1 -0
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts +39 -0
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js +41 -0
- package/dist/cjs/tracing/exporter/Agent365ExporterOptions.js.map +1 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts +19 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.js +24 -0
- package/dist/cjs/tracing/exporter/ExporterEventNames.js.map +1 -0
- package/dist/cjs/tracing/exporter/utils.d.ts +68 -0
- package/dist/cjs/tracing/exporter/utils.d.ts.map +1 -0
- package/dist/cjs/tracing/exporter/utils.js +180 -0
- package/dist/cjs/tracing/exporter/utils.js.map +1 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts +220 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.js +356 -0
- package/dist/cjs/tracing/middleware/BaggageBuilder.js.map +1 -0
- package/dist/cjs/tracing/processors/SpanProcessor.d.ts +30 -0
- package/dist/cjs/tracing/processors/SpanProcessor.d.ts.map +1 -0
- package/dist/cjs/tracing/processors/SpanProcessor.js +107 -0
- package/dist/cjs/tracing/processors/SpanProcessor.js.map +1 -0
- package/dist/cjs/tracing/processors/util.d.ts +9 -0
- package/dist/cjs/tracing/processors/util.d.ts.map +1 -0
- package/dist/cjs/tracing/processors/util.js +57 -0
- package/dist/cjs/tracing/processors/util.js.map +1 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts +26 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.js +57 -0
- package/dist/cjs/tracing/scopes/ExecuteToolScope.js.map +1 -0
- package/dist/cjs/tracing/scopes/InferenceScope.d.ts +51 -0
- package/dist/cjs/tracing/scopes/InferenceScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/InferenceScope.js +89 -0
- package/dist/cjs/tracing/scopes/InferenceScope.js.map +1 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts +35 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js +96 -0
- package/dist/cjs/tracing/scopes/InvokeAgentScope.js.map +1 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts +69 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js +190 -0
- package/dist/cjs/tracing/scopes/OpenTelemetryScope.js.map +1 -0
- package/dist/cjs/tracing/util.d.ts +13 -0
- package/dist/cjs/tracing/util.d.ts.map +1 -0
- package/dist/cjs/tracing/util.js +23 -0
- package/dist/cjs/tracing/util.js.map +1 -0
- package/dist/cjs/utils/logging.d.ts +111 -0
- package/dist/cjs/utils/logging.d.ts.map +1 -0
- package/dist/cjs/utils/logging.js +163 -0
- package/dist/cjs/utils/logging.js.map +1 -0
- package/dist/esm/ObservabilityBuilder.d.ts +101 -0
- package/dist/esm/ObservabilityBuilder.d.ts.map +1 -0
- package/dist/esm/ObservabilityBuilder.js +209 -0
- package/dist/esm/ObservabilityBuilder.js.map +1 -0
- package/dist/esm/ObservabilityManager.d.ts +29 -0
- package/dist/esm/ObservabilityManager.d.ts.map +1 -0
- package/dist/esm/ObservabilityManager.js +57 -0
- package/dist/esm/ObservabilityManager.js.map +1 -0
- package/dist/esm/configuration/ObservabilityConfiguration.d.ts +20 -0
- package/dist/esm/configuration/ObservabilityConfiguration.d.ts.map +1 -0
- package/dist/esm/configuration/ObservabilityConfiguration.js +62 -0
- package/dist/esm/configuration/ObservabilityConfiguration.js.map +1 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts +68 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.d.ts.map +1 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.js +4 -0
- package/dist/esm/configuration/ObservabilityConfigurationOptions.js.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts +19 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.d.ts.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js +49 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfiguration.js.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts +55 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.d.ts.map +1 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js +4 -0
- package/dist/esm/configuration/PerRequestSpanProcessorConfigurationOptions.js.map +1 -0
- package/dist/esm/configuration/index.d.ts +16 -0
- package/dist/esm/configuration/index.d.ts.map +1 -0
- package/dist/esm/configuration/index.js +18 -0
- package/dist/esm/configuration/index.js.map +1 -0
- package/dist/esm/index.d.ts +17 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +27 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.d.ts +41 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.d.ts.map +1 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.js +245 -0
- package/dist/esm/tracing/PerRequestSpanProcessor.js.map +1 -0
- package/dist/esm/tracing/constants.d.ts +108 -0
- package/dist/esm/tracing/constants.d.ts.map +1 -0
- package/dist/esm/tracing/constants.js +123 -0
- package/dist/esm/tracing/constants.js.map +1 -0
- package/dist/esm/tracing/context/parent-span-context.d.ts +37 -0
- package/dist/esm/tracing/context/parent-span-context.d.ts.map +1 -0
- package/dist/esm/tracing/context/parent-span-context.js +56 -0
- package/dist/esm/tracing/context/parent-span-context.js.map +1 -0
- package/dist/esm/tracing/context/token-context.d.ts +11 -0
- package/dist/esm/tracing/context/token-context.d.ts.map +1 -0
- package/dist/esm/tracing/context/token-context.js +22 -0
- package/dist/esm/tracing/context/token-context.js.map +1 -0
- package/dist/esm/tracing/contracts.d.ts +190 -0
- package/dist/esm/tracing/contracts.d.ts.map +1 -0
- package/dist/esm/tracing/contracts.js +41 -0
- package/dist/esm/tracing/contracts.js.map +1 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts +53 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.js +348 -0
- package/dist/esm/tracing/exporter/Agent365Exporter.js.map +1 -0
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts +39 -0
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.js +37 -0
- package/dist/esm/tracing/exporter/Agent365ExporterOptions.js.map +1 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.d.ts +19 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.js +21 -0
- package/dist/esm/tracing/exporter/ExporterEventNames.js.map +1 -0
- package/dist/esm/tracing/exporter/utils.d.ts +68 -0
- package/dist/esm/tracing/exporter/utils.d.ts.map +1 -0
- package/dist/esm/tracing/exporter/utils.js +163 -0
- package/dist/esm/tracing/exporter/utils.js.map +1 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts +220 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.d.ts.map +1 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.js +351 -0
- package/dist/esm/tracing/middleware/BaggageBuilder.js.map +1 -0
- package/dist/esm/tracing/processors/SpanProcessor.d.ts +30 -0
- package/dist/esm/tracing/processors/SpanProcessor.d.ts.map +1 -0
- package/dist/esm/tracing/processors/SpanProcessor.js +103 -0
- package/dist/esm/tracing/processors/SpanProcessor.js.map +1 -0
- package/dist/esm/tracing/processors/util.d.ts +9 -0
- package/dist/esm/tracing/processors/util.d.ts.map +1 -0
- package/dist/esm/tracing/processors/util.js +54 -0
- package/dist/esm/tracing/processors/util.js.map +1 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts +26 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.js +53 -0
- package/dist/esm/tracing/scopes/ExecuteToolScope.js.map +1 -0
- package/dist/esm/tracing/scopes/InferenceScope.d.ts +51 -0
- package/dist/esm/tracing/scopes/InferenceScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/InferenceScope.js +85 -0
- package/dist/esm/tracing/scopes/InferenceScope.js.map +1 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts +35 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.js +92 -0
- package/dist/esm/tracing/scopes/InvokeAgentScope.js.map +1 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts +69 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.d.ts.map +1 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js +183 -0
- package/dist/esm/tracing/scopes/OpenTelemetryScope.js.map +1 -0
- package/dist/esm/tracing/util.d.ts +13 -0
- package/dist/esm/tracing/util.d.ts.map +1 -0
- package/dist/esm/tracing/util.js +19 -0
- package/dist/esm/tracing/util.js.map +1 -0
- package/dist/esm/utils/logging.d.ts +111 -0
- package/dist/esm/utils/logging.d.ts.map +1 -0
- package/dist/esm/utils/logging.js +155 -0
- package/dist/esm/utils/logging.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { IConfigurationProvider } from '@microsoft/agents-a365-runtime';
|
|
2
|
+
import { ObservabilityConfiguration } from '../configuration';
|
|
3
|
+
/**
|
|
4
|
+
* Custom logger interface for Agent 365 observability
|
|
5
|
+
* Implement this interface to support logging backends
|
|
6
|
+
*/
|
|
7
|
+
export interface ILogger {
|
|
8
|
+
/**
|
|
9
|
+
* Log an informational message
|
|
10
|
+
* @param message The log message
|
|
11
|
+
* @param args Optional arguments to include in the log
|
|
12
|
+
*/
|
|
13
|
+
info(message: string, ...args: unknown[]): void;
|
|
14
|
+
/**
|
|
15
|
+
* Log a warning message
|
|
16
|
+
* @param message The log message
|
|
17
|
+
* @param args Optional arguments to include in the log
|
|
18
|
+
*/
|
|
19
|
+
warn(message: string, ...args: unknown[]): void;
|
|
20
|
+
/**
|
|
21
|
+
* Log an error message
|
|
22
|
+
* @param message The log message
|
|
23
|
+
* @param args Optional arguments to include in the log
|
|
24
|
+
*/
|
|
25
|
+
error(message: string, ...args: unknown[]): void;
|
|
26
|
+
/**
|
|
27
|
+
* Log an event with standardized parameters
|
|
28
|
+
* @param eventType Standardized event name/category (e.g., ExporterEventNames.EXPORT)
|
|
29
|
+
* @param isSuccess Whether the operation/event succeeded
|
|
30
|
+
* @param durationMs Duration of the operation/event in milliseconds
|
|
31
|
+
* @param message Optional message or additional details about the event, especially useful for errors or failures
|
|
32
|
+
* @param correlationId Optional correlation identifier to connect events/logs across components
|
|
33
|
+
|
|
34
|
+
*/
|
|
35
|
+
event(eventType: string, isSuccess: boolean, durationMs: number, message?: string, correlationId?: string): void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Format error object for logging with message and stack trace
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatError(error: unknown): string;
|
|
41
|
+
/**
|
|
42
|
+
* Default console-based logger implementation with configuration provider support.
|
|
43
|
+
*
|
|
44
|
+
* Environment Variable:
|
|
45
|
+
* A365_OBSERVABILITY_LOG_LEVEL=none|info|warn|error (default: none)
|
|
46
|
+
*
|
|
47
|
+
* Single values:
|
|
48
|
+
* none = no logging (default)
|
|
49
|
+
* info = info messages only
|
|
50
|
+
* warn = warn messages only
|
|
51
|
+
* error = error messages only
|
|
52
|
+
*
|
|
53
|
+
* Multiple values (pipe-separated):
|
|
54
|
+
* info|warn = info and warn messages
|
|
55
|
+
* warn|error = warn and error messages
|
|
56
|
+
* info|warn|error = all message types
|
|
57
|
+
*/
|
|
58
|
+
export declare class DefaultLogger implements ILogger {
|
|
59
|
+
private readonly configProvider;
|
|
60
|
+
constructor(configProvider?: IConfigurationProvider<ObservabilityConfiguration>);
|
|
61
|
+
private getEnabledLogLevels;
|
|
62
|
+
info(message: string, ...args: unknown[]): void;
|
|
63
|
+
warn(message: string, ...args: unknown[]): void;
|
|
64
|
+
error(message: string, ...args: unknown[]): void;
|
|
65
|
+
event(eventType: string, isSuccess: boolean, durationMs: number, message?: string, correlationId?: string): void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Set a custom logger implementation for the observability SDK
|
|
69
|
+
*
|
|
70
|
+
* Example with Winston:
|
|
71
|
+
* ```typescript
|
|
72
|
+
* import * as winston from 'winston';
|
|
73
|
+
* import { setLogger } from '@microsoft/agents-a365-observability';
|
|
74
|
+
*
|
|
75
|
+
* const winstonLogger = winston.createLogger({
|
|
76
|
+
* level: 'info',
|
|
77
|
+
* format: winston.format.json(),
|
|
78
|
+
* transports: [
|
|
79
|
+
* new winston.transports.File({ filename: 'error.log', level: 'error' }),
|
|
80
|
+
* new winston.transports.File({ filename: 'combined.log' })
|
|
81
|
+
* ]
|
|
82
|
+
* });
|
|
83
|
+
*
|
|
84
|
+
* setLogger({
|
|
85
|
+
* info: (msg, ...args) => winstonLogger.info(msg, ...args),
|
|
86
|
+
* warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
|
|
87
|
+
* error: (msg, ...args) => winstonLogger.error(msg, ...args),
|
|
88
|
+
* event: (eventType, isSuccess, durationMs, message, correlationId) => {
|
|
89
|
+
* winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, correlationId });
|
|
90
|
+
* }
|
|
91
|
+
* });
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @param customLogger The custom logger implementation
|
|
95
|
+
*/
|
|
96
|
+
export declare function setLogger(customLogger: ILogger): void;
|
|
97
|
+
/**
|
|
98
|
+
* Get the current logger instance
|
|
99
|
+
*/
|
|
100
|
+
export declare function getLogger(): ILogger;
|
|
101
|
+
/**
|
|
102
|
+
* Reset to the default console logger (mainly for testing)
|
|
103
|
+
*/
|
|
104
|
+
export declare function resetLogger(): void;
|
|
105
|
+
/**
|
|
106
|
+
* Default logger instance for backward compatibility.
|
|
107
|
+
* Delegates to the global logger which can be replaced via setLogger().
|
|
108
|
+
*/
|
|
109
|
+
export declare const logger: ILogger;
|
|
110
|
+
export default logger;
|
|
111
|
+
//# sourceMappingURL=logging.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAEL,0BAA0B,EAC3B,MAAM,kBAAkB,CAAC;AAE1B;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEhD;;;;OAIG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEjD;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClH;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKlD;AAkCD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAc,YAAW,OAAO;IAEzC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAAd,cAAc,GAAE,sBAAsB,CAAC,0BAA0B,CAA6C;IAGjI,OAAO,CAAC,mBAAmB;IAI3B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAM/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAMhD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;CAUjH;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,SAAS,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAWrD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAEnC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,OAMpB,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
// Copyright (c) Microsoft Corporation.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { defaultObservabilityConfigurationProvider } from '../configuration';
|
|
4
|
+
/**
|
|
5
|
+
* Format error object for logging with message and stack trace
|
|
6
|
+
*/
|
|
7
|
+
export function formatError(error) {
|
|
8
|
+
if (error instanceof Error) {
|
|
9
|
+
return `${error.message}\nStack: ${error.stack || 'No stack trace'}`;
|
|
10
|
+
}
|
|
11
|
+
return String(error);
|
|
12
|
+
}
|
|
13
|
+
const LOG_LEVELS = {
|
|
14
|
+
none: 0,
|
|
15
|
+
info: 1,
|
|
16
|
+
warn: 2,
|
|
17
|
+
error: 3
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Parse log level string into a set of enabled log levels.
|
|
21
|
+
* Supports pipe-separated values like "info|warn|error".
|
|
22
|
+
*/
|
|
23
|
+
function parseLogLevel(level) {
|
|
24
|
+
const levels = new Set();
|
|
25
|
+
const levelStrings = level.toLowerCase().trim().split('|');
|
|
26
|
+
for (const levelString of levelStrings) {
|
|
27
|
+
const normalizedLevel = levelString.trim();
|
|
28
|
+
const levelValue = LOG_LEVELS[normalizedLevel];
|
|
29
|
+
if (levelValue !== undefined) {
|
|
30
|
+
levels.add(levelValue);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// If no valid levels found, default to none
|
|
34
|
+
if (levels.size === 0) {
|
|
35
|
+
levels.add(LOG_LEVELS.none);
|
|
36
|
+
}
|
|
37
|
+
return levels;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Default console-based logger implementation with configuration provider support.
|
|
41
|
+
*
|
|
42
|
+
* Environment Variable:
|
|
43
|
+
* A365_OBSERVABILITY_LOG_LEVEL=none|info|warn|error (default: none)
|
|
44
|
+
*
|
|
45
|
+
* Single values:
|
|
46
|
+
* none = no logging (default)
|
|
47
|
+
* info = info messages only
|
|
48
|
+
* warn = warn messages only
|
|
49
|
+
* error = error messages only
|
|
50
|
+
*
|
|
51
|
+
* Multiple values (pipe-separated):
|
|
52
|
+
* info|warn = info and warn messages
|
|
53
|
+
* warn|error = warn and error messages
|
|
54
|
+
* info|warn|error = all message types
|
|
55
|
+
*/
|
|
56
|
+
export class DefaultLogger {
|
|
57
|
+
constructor(configProvider = defaultObservabilityConfigurationProvider) {
|
|
58
|
+
this.configProvider = configProvider;
|
|
59
|
+
}
|
|
60
|
+
getEnabledLogLevels() {
|
|
61
|
+
return parseLogLevel(this.configProvider.getConfiguration().observabilityLogLevel);
|
|
62
|
+
}
|
|
63
|
+
info(message, ...args) {
|
|
64
|
+
if (this.getEnabledLogLevels().has(LOG_LEVELS.info)) {
|
|
65
|
+
console.log('[INFO]', message, ...args);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
warn(message, ...args) {
|
|
69
|
+
if (this.getEnabledLogLevels().has(LOG_LEVELS.warn)) {
|
|
70
|
+
console.warn('[WARN]', message, ...args);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
error(message, ...args) {
|
|
74
|
+
if (this.getEnabledLogLevels().has(LOG_LEVELS.error)) {
|
|
75
|
+
console.error('[ERROR]', message, ...args);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
event(eventType, isSuccess, durationMs, message, correlationId) {
|
|
79
|
+
const status = isSuccess ? 'succeeded' : 'failed';
|
|
80
|
+
const logLevelNeeded = isSuccess ? 1 : 3;
|
|
81
|
+
if (this.getEnabledLogLevels().has(logLevelNeeded)) {
|
|
82
|
+
const logFn = isSuccess ? console.log : console.error;
|
|
83
|
+
const messageInfo = message ? ` - ${message}` : '';
|
|
84
|
+
const correlationInfo = correlationId ? ` [${correlationId}]` : '';
|
|
85
|
+
logFn(`[EVENT]: ${eventType} ${status} in ${durationMs}ms${messageInfo}${correlationInfo}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Global logger instance - can be replaced with a custom logger via setLogger()
|
|
91
|
+
*/
|
|
92
|
+
let globalLogger = new DefaultLogger();
|
|
93
|
+
/**
|
|
94
|
+
* Set a custom logger implementation for the observability SDK
|
|
95
|
+
*
|
|
96
|
+
* Example with Winston:
|
|
97
|
+
* ```typescript
|
|
98
|
+
* import * as winston from 'winston';
|
|
99
|
+
* import { setLogger } from '@microsoft/agents-a365-observability';
|
|
100
|
+
*
|
|
101
|
+
* const winstonLogger = winston.createLogger({
|
|
102
|
+
* level: 'info',
|
|
103
|
+
* format: winston.format.json(),
|
|
104
|
+
* transports: [
|
|
105
|
+
* new winston.transports.File({ filename: 'error.log', level: 'error' }),
|
|
106
|
+
* new winston.transports.File({ filename: 'combined.log' })
|
|
107
|
+
* ]
|
|
108
|
+
* });
|
|
109
|
+
*
|
|
110
|
+
* setLogger({
|
|
111
|
+
* info: (msg, ...args) => winstonLogger.info(msg, ...args),
|
|
112
|
+
* warn: (msg, ...args) => winstonLogger.warn(msg, ...args),
|
|
113
|
+
* error: (msg, ...args) => winstonLogger.error(msg, ...args),
|
|
114
|
+
* event: (eventType, isSuccess, durationMs, message, correlationId) => {
|
|
115
|
+
* winstonLogger.log({ level: isSuccess ? 'info' : 'error', eventType, isSuccess, durationMs, message, correlationId });
|
|
116
|
+
* }
|
|
117
|
+
* });
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @param customLogger The custom logger implementation
|
|
121
|
+
*/
|
|
122
|
+
export function setLogger(customLogger) {
|
|
123
|
+
if (!customLogger ||
|
|
124
|
+
typeof customLogger.info !== 'function' ||
|
|
125
|
+
typeof customLogger.warn !== 'function' ||
|
|
126
|
+
typeof customLogger.error !== 'function' ||
|
|
127
|
+
typeof customLogger.event !== 'function') {
|
|
128
|
+
throw new Error('Custom logger must implement ILogger interface with all methods: info, warn, error, and event');
|
|
129
|
+
}
|
|
130
|
+
globalLogger = customLogger;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get the current logger instance
|
|
134
|
+
*/
|
|
135
|
+
export function getLogger() {
|
|
136
|
+
return globalLogger;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Reset to the default console logger (mainly for testing)
|
|
140
|
+
*/
|
|
141
|
+
export function resetLogger() {
|
|
142
|
+
globalLogger = new DefaultLogger();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Default logger instance for backward compatibility.
|
|
146
|
+
* Delegates to the global logger which can be replaced via setLogger().
|
|
147
|
+
*/
|
|
148
|
+
export const logger = {
|
|
149
|
+
info: (message, ...args) => globalLogger.info(message, ...args),
|
|
150
|
+
warn: (message, ...args) => globalLogger.warn(message, ...args),
|
|
151
|
+
error: (message, ...args) => globalLogger.error(message, ...args),
|
|
152
|
+
event: (eventType, isSuccess, durationMs, message, correlationId) => globalLogger.event(eventType, isSuccess, durationMs, message, correlationId)
|
|
153
|
+
};
|
|
154
|
+
export default logger;
|
|
155
|
+
//# sourceMappingURL=logging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/utils/logging.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@microsoft/agents-a365-observability",
|
|
3
|
+
"version": "0.1.0-preview.103",
|
|
4
|
+
"description": "OpenTelemetry tracing and monitoring SDK for AI agents built with TypeScript/Node.js",
|
|
5
|
+
"main": "dist/cjs/index.js",
|
|
6
|
+
"module": "dist/esm/index.js",
|
|
7
|
+
"types": "dist/esm/index.d.ts",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"Agent365",
|
|
10
|
+
"opentelemetry",
|
|
11
|
+
"tracing",
|
|
12
|
+
"monitoring",
|
|
13
|
+
"ai",
|
|
14
|
+
"agents",
|
|
15
|
+
"azure",
|
|
16
|
+
"typescript"
|
|
17
|
+
],
|
|
18
|
+
"author": "Microsoft Corporation",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/microsoft/Agent365-nodejs.git",
|
|
23
|
+
"directory": "packages/agents-a365-observability"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@azure/monitor-opentelemetry-exporter": "^1.0.0-beta.32",
|
|
27
|
+
"@microsoft/agents-a365-runtime": "0.1.0-preview.103",
|
|
28
|
+
"@opentelemetry/api": "^1.9.0",
|
|
29
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.205.0",
|
|
30
|
+
"@opentelemetry/instrumentation": "^0.204.0",
|
|
31
|
+
"@opentelemetry/resources": "^2.1.0",
|
|
32
|
+
"@opentelemetry/sdk-node": "^0.204.0",
|
|
33
|
+
"@opentelemetry/sdk-trace-base": "^2.1.0",
|
|
34
|
+
"@opentelemetry/semantic-conventions": "^1.37.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@eslint/js": "^9.39.1",
|
|
38
|
+
"@types/jest": "^30.0.0",
|
|
39
|
+
"@types/node": "^20.17.0",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^8.47.0",
|
|
41
|
+
"@typescript-eslint/parser": "^8.47.0",
|
|
42
|
+
"eslint": "^9.39.1",
|
|
43
|
+
"jest": "^30.2.0",
|
|
44
|
+
"rimraf": "^6.0.0",
|
|
45
|
+
"ts-jest": "^29.4.5",
|
|
46
|
+
"typescript": "^5.9.3",
|
|
47
|
+
"typescript-eslint": "^8.47.0"
|
|
48
|
+
},
|
|
49
|
+
"engines": {
|
|
50
|
+
"node": ">=18.0.0"
|
|
51
|
+
},
|
|
52
|
+
"files": [
|
|
53
|
+
"dist/**/*",
|
|
54
|
+
"README.md",
|
|
55
|
+
"CHANGELOG.md",
|
|
56
|
+
"LICENSE.md"
|
|
57
|
+
],
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build:cjs": "npx tsc --project tsconfig.cjs.json",
|
|
60
|
+
"build:esm": "npx tsc --project tsconfig.esm.json",
|
|
61
|
+
"build": "npm run build:cjs && npm run build:esm",
|
|
62
|
+
"build:watch": "npx tsc --watch",
|
|
63
|
+
"clean": "npx rimraf dist",
|
|
64
|
+
"test": "jest --passWithNoTests",
|
|
65
|
+
"test:watch": "jest --watch",
|
|
66
|
+
"lint": "eslint src",
|
|
67
|
+
"lint:fix": "eslint src --fix",
|
|
68
|
+
"ci": "npm ci",
|
|
69
|
+
"pack": "node ../../copyFiles.js . && pnpm pack --pack-destination=../"
|
|
70
|
+
}
|
|
71
|
+
}
|