fix(home-server): streaming logs

This commit is contained in:
Karol Sójko
2023-06-02 14:10:14 +02:00
parent fa0b0294b4
commit a8b806af08
11 changed files with 34 additions and 28 deletions

View File

@@ -88,9 +88,9 @@ export class ContainerConfigLoader {
}
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
})
container.bind<winston.Logger>(TYPES.Logger).toConstantValue(logger)

View File

@@ -49,9 +49,9 @@ export class ContainerConfigLoader {
container.bind<winston.Logger>(TYPES.Logger).toConstantValue(configuration.logger as winston.Logger)
} else {
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
defaultMeta: { service: 'api-gateway' },
})
container.bind<winston.Logger>(TYPES.Logger).toConstantValue(logger)

View File

@@ -298,9 +298,9 @@ export class ContainerConfigLoader {
container.bind<winston.Logger>(TYPES.Auth_Logger).toConstantValue(configuration.logger as winston.Logger)
} else {
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
defaultMeta: { service: 'auth' },
})
container.bind<winston.Logger>(TYPES.Auth_Logger).toConstantValue(logger)

View File

@@ -49,9 +49,9 @@ export class ContainerConfigLoader {
}
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(winston.format.splat(), winston.format.json()),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
})
container.bind<winston.Logger>(TYPES.Logger).toConstantValue(logger)

View File

@@ -250,9 +250,9 @@ export class ContainerConfigLoader {
createLogger({ env }: { env: Env }): winston.Logger {
return winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(winston.format.splat(), winston.format.json()),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
defaultMeta: { service: 'files' },
})
}

View File

@@ -2,7 +2,13 @@ import { HomeServer } from '../src/Server/HomeServer'
const homeServer = new HomeServer()
Promise.resolve(homeServer.start()).catch((error) => {
Promise.resolve(homeServer.start()).then(() => {
const logStream = homeServer.logs()
logStream.on('data', (chunk: Buffer) => {
console.log(chunk.toString())
})
}).catch((error) => {
// eslint-disable-next-line no-console
console.log(`Could not start server: ${error.message}`)
})

View File

@@ -24,6 +24,7 @@ import { HomeServerConfiguration } from './HomeServerConfiguration'
export class HomeServer implements HomeServerInterface {
private serverInstance: http.Server | undefined
private logStream: PassThrough = new PassThrough()
async start(configuration?: HomeServerConfiguration): Promise<void> {
const controllerContainer = new ControllerContainer()
@@ -150,18 +151,14 @@ export class HomeServer implements HomeServerInterface {
}
logs(): NodeJS.ReadableStream {
const passThroughStream = new PassThrough()
for (const logger of winston.loggers.loggers.values()) {
logger.stream({ start: -1 }).pipe(passThroughStream, { end: false })
}
return passThroughStream
return this.logStream
}
private configureLoggers(env: Env): void {
const winstonFormatters = [winston.format.splat(), winston.format.json()]
const level = env.get('LOG_LEVEL', true) || 'info'
for (const loggerName of [
'auth-server',
'syncing-server',
@@ -171,9 +168,12 @@ export class HomeServer implements HomeServerInterface {
'home-server',
]) {
winston.loggers.add(loggerName, {
level: env.get('LOG_LEVEL') || 'info',
level,
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Stream({
level,
stream: this.logStream,
})],
defaultMeta: { service: loggerName },
})
}

View File

@@ -85,9 +85,9 @@ export class ContainerConfigLoader {
}
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
defaultMeta: { service: 'revisions' },
})

View File

@@ -66,9 +66,9 @@ export class ContainerConfigLoader {
}
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
})
container.bind<winston.Logger>(TYPES.Logger).toConstantValue(logger)

View File

@@ -115,9 +115,9 @@ export class ContainerConfigLoader {
}
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
defaultMeta: { service: 'syncing-server' },
})

View File

@@ -66,9 +66,9 @@ export class ContainerConfigLoader {
}
const logger = winston.createLogger({
level: env.get('LOG_LEVEL') || 'info',
level: env.get('LOG_LEVEL', true) || 'info',
format: winston.format.combine(...winstonFormatters),
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL') || 'info' })],
transports: [new winston.transports.Console({ level: env.get('LOG_LEVEL', true) || 'info' })],
})
container.bind<winston.Logger>(TYPES.Logger).toConstantValue(logger)