fontcolor_theme
Deepkit App

로거

Deepkit Logger는 정보를 로깅하는 데 사용할 수 있는 기본 Logger 클래스를 포함한 독립 실행형 라이브러리입니다. 이 클래스는 Deepkit 애플리케이션의 의존성 주입(Dependency Injection) 컨테이너에서 자동으로 사용 가능합니다.

Logger 클래스에는 여러 메서드가 있으며, 각각은 console.log와 동일하게 동작합니다.

logger.error()오류1
logger.warning()경고2
logger.log()기본 로그3
logger.info()특별 정보4
logger.debug()디버그 정보5

기본적으로 로거는 info 레벨을 가지며, 즉 info 메시지 이상만 처리합니다(즉, log, warning, error는 처리하지만 debug는 처리하지 않음). 로그 레벨을 변경하려면 예를 들어 logger.level = 5를 호출하세요.

애플리케이션에서 사용

Deepkit 애플리케이션에서 로거를 사용하려면 서비스나 컨트롤러에 Logger를 간단히 주입하면 됩니다.

import { Logger } from '@deepkit/logger';
import { App } from '@deepkit/app';

const app = new App();
app.command('test', (logger: Logger) => {
    logger.log('This is a <yellow>log message</yellow>');
});

app.run();

색상

로거는 컬러 로그 메시지를 지원합니다. 컬러로 표시하려는 텍스트를 감싸는 XML 태그를 사용하여 색상을 지정할 수 있습니다.

const username = 'Peter';
logger.log(`Hi <green>${username}</green>`);

색상을 지원하지 않는 트랜스포터의 경우 색상 정보는 자동으로 제거됩니다. 기본 트랜스포터(ConsoleTransport)에서는 색상이 표시됩니다. 다음 색상을 사용할 수 있습니다: black, red, green, blue, cyan, magenta, white, grey/gray.

트랜스포터

하나의 트랜스포터 또는 여러 트랜스포터를 구성할 수 있습니다. Deepkit 애플리케이션에서는 ConsoleTransport 트랜스포터가 자동으로 구성됩니다. 추가 트랜스포터를 구성하려면 설정 호출을 사용하세요:

import { Logger, LoggerTransport } from '@deepkit/logger';

export class MyTransport implements LoggerTransport {
    write(message: string, level: LoggerLevel, rawMessage: string) {
        process.stdout.write(JSON.stringify({message: rawMessage, level, time: new Date}) + '\n');
    }

    supportsColor() {
        return false;
    }
}

new App()
    .setup((module, config) => {
        module.configureProvider<Logger>(v => v.addTransport(new MyTransport));
    })
    .run();

모든 트랜스포터를 새로운 트랜스포터 집합으로 교체하려면 setTransport를 사용하세요:

import { Logger } from '@deepkit/logger';

new App()
.setup((module, config) => {
    module.configureProvider<Logger>(v => v.setTransport([new MyTransport]));
})
.run();
import { Logger, JSONTransport } from '@deepkit/logger';

new App()
    .setup((module, config) => {
        module.configureProvider<Logger>(v => v.setTransport([new JSONTransport]));
    })
    .run();

스코프드 로거

스코프드 로거는 각 로그 항목에 임의의 영역 이름을 추가하여, 해당 로그 항목이 애플리케이션의 어떤 하위 영역에서 발생했는지 파악하는 데 도움이 됩니다.

const scopedLogger = logger.scoped('database');
scopedLogger.log('Query', query);

서비스에 스코프드 로거를 주입할 때 사용할 수 있는 ScopedLogger 타입도 있습니다.

import { ScopedLogger } from '@deepkit/logger';

class MyService {
    constructor(protected logger: ScopedLogger) {}
    doSomething() {
        this.logger.log('This is wild');
    }
}

이제 스코프드 로거의 모든 메시지에는 MyService 스코프 이름이 접두사로 붙습니다.

포맷터

포맷터를 사용하면 메시지 형식을 변경할 수 있으며, 예를 들어 타임스탬프를 추가할 수 있습니다. 애플리케이션이 server:start로 시작될 때 다른 포맷터가 없으면 DefaultFormatter가 자동으로 추가됩니다(타임스탬프, 범위, 로그 레벨을 추가).

컨텍스트 데이터

로그 항목에 컨텍스트 데이터를 추가하려면 마지막 인자로 간단한 객체 리터럴을 추가하세요. 최소 두 개 이상의 인자를 가진 로그 호출만 컨텍스트 데이터를 포함할 수 있습니다.

const query = 'SELECT *';
const user = new User;
logger.log('Query', {query, user}); // 마지막 인자는 컨텍스트 데이터
logger.log('Another', 'wild log entry', query, {user}); // 마지막 인자는 컨텍스트 데이터

logger.log({query, user}); // 이는 컨텍스트 데이터로 처리되지 않습니다.
English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)