Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,910 changes: 911 additions & 1,999 deletions .pnp.cjs

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions .yarn/versions/390e71d0.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
releases:
"@atls/guard-clause": patch
"@atls/logger": major

declined:
- "@common-example/guard-clause"
- "@common-example/logger"
- "@common-example/service-entrypoint"
18 changes: 9 additions & 9 deletions examples/service-entrypoint/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,18 @@
},
"dependencies": {
"@atls/logger": "workspace:*",
"@grpc/grpc-js": "1.10.4",
"@grpc/proto-loader": "0.7.11",
"@nestjs/common": "10.3.7",
"@nestjs/core": "10.3.7",
"@nestjs/microservices": "10.3.7",
"@nestjs/platform-express": "10.3.7",
"@nestjs/platform-socket.io": "10.3.7",
"@nestjs/websockets": "10.3.7",
"@grpc/grpc-js": "1.14.6",
"@grpc/proto-loader": "0.7.15",
"@nestjs/common": "11.2.7",
"@nestjs/core": "11.2.7",
"@nestjs/microservices": "11.2.7",
"@nestjs/platform-express": "11.2.7",
"@nestjs/platform-socket.io": "11.2.7",
"@nestjs/websockets": "11.2.7",
"class-transformer": "0.5.1",
"class-validator": "0.14.1",
"kafkajs": "2.2.4",
"reflect-metadata": "0.2.1",
"reflect-metadata": "0.2.2",
"rxjs": "7.8.1"
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
"*.{test,spec}.{ts,tsx}": "yarn test unit"
},
"devDependencies": {
"@atls/raijin": "1.1.1",
"@atls/raijin": "2.1.0",
"@types/node": "22.20.0"
},
"packageManager": "[email protected]"
Expand Down
4 changes: 2 additions & 2 deletions packages/guard-clause/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
"postpack": "rm -rf dist"
},
"dependencies": {
"ajv": "8.17.1",
"validator": "13.12.0"
"ajv": "8.20.0",
"validator": "13.15.35"
},
"devDependencies": {
"@types/validator": "13.12.2"
Expand Down
8 changes: 4 additions & 4 deletions packages/logger/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
"postpack": "rm -rf dist"
},
"dependencies": {
"@opentelemetry/api": "1.8.0",
"@opentelemetry/api-logs": "0.49.1",
"@opentelemetry/core": "1.22.0",
"@opentelemetry/sdk-logs": "0.49.1",
"@opentelemetry/api": "1.9.1",
"@opentelemetry/api-logs": "0.223.0",
"@opentelemetry/core": "2.12.0",
"@opentelemetry/sdk-logs": "0.223.0",
"on-exit-leak-free": "2.1.2",
"sonic-boom": "3.8.0"
},
Expand Down
26 changes: 13 additions & 13 deletions packages/logger/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
export type { LoggerOptions } from '@opentelemetry/api-logs'
export type { LogRecord } from '@opentelemetry/api-logs'
export type { LogAttributeValue } from '@opentelemetry/api-logs'
export type { LogAttributes } from '@opentelemetry/api-logs'
export type { AttributeValue } from '@opentelemetry/api'
export type { Context } from '@opentelemetry/api'
export type { LoggerOptions } from '@opentelemetry/api-logs'
export type { LogRecord } from '@opentelemetry/api-logs'
export type { AnyValue as LogAttributeValue } from '@opentelemetry/api-logs'
export type { LogAttributes } from '@opentelemetry/api-logs'
export type { AttributeValue } from '@opentelemetry/api'
export type { Context } from '@opentelemetry/api'

export { SeverityNumber } from '@opentelemetry/api-logs'
export { logs } from '@opentelemetry/api-logs'
export { SeverityNumber } from '@opentelemetry/api-logs'
export { logs } from '@opentelemetry/api-logs'

export { SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs'
export { LoggerProvider } from '@opentelemetry/sdk-logs'
export { SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs'
export { LoggerProvider } from '@opentelemetry/sdk-logs'

export * from './logger.configuration.js'
export * from './logger.constants.js'
export * from './logger.js'
export * from './logger.configuration.js'
export * from './logger.constants.js'
export * from './logger.js'
23 changes: 9 additions & 14 deletions packages/logger/src/logger.api.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import type { LoggerProvider as ApiLoggerProvider } from '@opentelemetry/api-logs'

import { NoopLoggerProvider } from '@opentelemetry/api-logs'
import { LoggerProvider } from '@opentelemetry/sdk-logs'
import { SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs'
import { logs } from '@opentelemetry/api-logs'
Expand All @@ -13,21 +12,17 @@ export class LoggerApi {

static getLoggerProvider(): ApiLoggerProvider {
if (!LoggerApi.initialized) {
if (logs.getLoggerProvider() instanceof NoopLoggerProvider) {
const loggerProvider = new LoggerProvider()
const exporter =
process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID
? new ConsoleLogRecordExporter()
: new SonicBoomLogRecordExporter()
const loggerProvider = new LoggerProvider({
processors: [new SimpleLogRecordProcessor({ exporter })],
})

loggerProvider.addLogRecordProcessor(
new SimpleLogRecordProcessor(
process.env.NODE_ENV === 'test' || process.env.JEST_WORKER_ID
? new ConsoleLogRecordExporter()
: new SonicBoomLogRecordExporter()
)
)
logs.setGlobalLoggerProvider(loggerProvider)

logs.setGlobalLoggerProvider(loggerProvider)

LoggerApi.initialized = true
}
LoggerApi.initialized = true
}

return logs.getLoggerProvider()
Expand Down
45 changes: 45 additions & 0 deletions packages/logger/src/logger.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import assert from 'node:assert/strict'
import { test } from 'node:test'

import { Logger } from './index.js'

test('emits a log record through the configured provider', (context) => {
const output: Array<string> = []
const previousNodeEnv = process.env.NODE_ENV

context.mock.method(process.stdout, 'write', (chunk: Uint8Array | string): boolean => {
output.push(String(chunk))

return true
})

process.env.NODE_ENV = 'test'

try {
new Logger('billing', { service: 'common' }).info('started', { requestId: 'sample' })

assert.equal(output.length, 1)

const record = JSON.parse(output[0]) as {
severityText: string
severityNumber: number
body: string
attributes: Record<string, unknown>
}

assert.equal(record.severityText, 'INFO')
assert.equal(record.severityNumber, 9)
assert.equal(record.body, 'started')
assert.deepEqual(record.attributes, {
service: 'common',
requestId: 'sample',
'@namespace': 'billing',
})
} finally {
if (previousNodeEnv === undefined) {
delete process.env.NODE_ENV
} else {
process.env.NODE_ENV = previousNodeEnv
}
}
})
Loading
Loading