로깅 출력은 최종 사용자에게 메시지를 표시하는 추가적인 방법입니다.
webpack애서 사용자 정의 로깅 API의 이점:
stats.json
의 일부로 export 할 수 있는 로깅 출력입니다.webpack 로깅 API를 도입함으로써 webpack 플러그인 및 로더가 로그를 내보내는 방식을 통합하고 빌드 문제를 검사하는 더 나은 방법을 제공하기를 바랍니다. 통합 로깅 솔루션은 개발 경험을 개선하여 플러그인 및 로더 개발자를 지원합니다. 대시보드 또는 기타 UI와 같은 CLI가 아닌 wepack 솔루션을 위한 기반을 마련합니다.
my-webpack-plugin.js
const PLUGIN_NAME = 'my-webpack-plugin';
export class MyWebpackPlugin {
apply(compiler) {
// 컴파일러에서 로거에 액세스 할 수 있습니다.
const logger = compiler.getInfrastructureLogger(PLUGIN_NAME);
logger.log('log from compiler');
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
// 컴파일에서도 로거에 액세스 할 수 있습니다.
const logger = compilation.getLogger(PLUGIN_NAME);
logger.info('log from compilation');
});
}
}
my-webpack-loader.js
module.exports = function (source) {
// webpack 로더에서 `this.getLogger`로 로거를 얻을 수 있습니다.
const logger = this.getLogger('my-webpack-loader');
logger.info('hello Logger');
return source;
};
위의 my-webpack-plugin.js
예제에서 볼 수 있듯이, 두 가지 유형의 로깅 방법이 있습니다.
compilation.getLogger
compiler.getInfrastructureLogger
플러그인/로깅이 컴파일과 관련된 경우 compilation.getLogger
를 사용하는 것이 좋으며 통계 안에 저장됩니다. 컴파일 주기 밖에서 발생하는 로깅의 경우에는 대신 compiler.getInfrastructureLogger
를 사용하세요.
logger.error(...)
: 에러 메시지용입니다.logger.warn(...)
: 경고용입니다.logger.info(...)
: 중요 정보성 메시지용입니다. 이러한 메시지는 기본적으로 표시됩니다. 사용자가 실제로 봐야하는 메시지에만 사용합니다.logger.log(...)
: 중요하지 않은 정보성 메시지용입니다. 이러한 메시지는 사용자가 볼 수 있도록 선택한 경우에만 표시됩니다.logger.debug(...)
: 디버깅 정보용입니다. 이러한 메시지는 사용자가 특정 모듈에 대한 디버그 로깅을 보기로 선택한 경우에만 표시됩니다.logger.trace()
: 스택 추적을 표시하기 위해 사용합니다. logger.debug
처럼 표시됩니다.logger.group(...)
: 메시지를 그룹화하기 위해 사용합니다. logger.log
처럼 접힌 채로 표시됩니다.logger.groupEnd()
: 로깅 그룹을 종료하기 위해 사용합니다.logger.groupCollapsed(...)
: 메시지를 함께 그룹화하기 위해 사용합니다. logger.log
처럼 접힌 채로 표시됩니다. 로깅 수준이 'verbose'
나 'debug'
로 설정된 경우 확장되어 표시됩니다.logger.status
: 임시 메시지를 작성하고, 새 상태를 설정하고, 이전 메시지를 재정의합니다.logger.clear()
: 수평 라인을 출력합니다. logger.log
처럼 표시됩니다.logger.profile(...)
, logger.profileEnd(...)
: 프로파일을 캡처하기 위해 사용합니다. 지원되는 경우 console.profile
에 위임됩니다.런타임 로거 API는 개발 도구로만 사용할 수 있고 프로덕션 모드에 포함할 수 없습니다.
const logging = require('webpack/lib/logging/runtime')
: 런타임에서 로거를 사용하려면 webpack에서 직접 require 해야 합니다.logging.getLogger('name')
: 이름으로 개별 로거를 가져오기 위해 사용합니다.logging.configureDefaultLogger(...)
: 기본 로거를 재정의합니다.const logging = require('webpack/lib/logging/runtime');
logging.configureDefaultLogger({
level: 'log',
debug: /something/,
});
logging.hooks.log
: 런타임 로거에 플러그인을 적용하기 위해 사용합니다.