Node.Js에서 Azure 함수를 사용하고 있습니다.Azure 함수 - 다른 호출간에 공유 된 객체
azure 함수의 컨텍스트 객체를 사용하고 Azure 포털 UI에 표시된 함수의 로그에 작성하는 사용자 정의 Node.js 로거 모듈을 만들었습니다. 우리는 이것을 여러 곳에서 사용하고 있기 때문에이를 싱글 톤 객체로 정의하고 함수의 컨텍스트 객체를이 객체에 주입했습니다.
그런 다음 다른 모든 함수 실행이 동일한 로거 개체를 사용하고 있으며 데이터를 자체 컨텍스트 로그에 로깅하지 않는 것으로 나타났습니다. 이것은 각 함수 호출이 분리되어 있고 서로 다른 호출 사이에 공유 모듈이 존재하지 않기 때문에 매우 이상합니다.
이 푸른 기능 코드 :
var Logger = require('../custom_modules/logger/customLogger.js');
module.exports = function (azureContext) {
function infoFn(msg){
azureContext ? azureContext.log(msg) : console.log(msg);
}
function errorFn(msg){
azureContext ? azureContext.log(msg) : console.error(msg);
}
var logger = Logger(infoFn, errorFn);
logger.info('function was triggered');
azureContext.done();
}
그리고 이것은 로거 모듈 코드 :
var _customLogger;
var CustomLogger = function (info, error) {
this.error = error;
this.info = info;
};
function logger(info, error) {
if (!_customLogger) {
_customLogger = new CustomLogger(info, error);
} else {
if(info){
_customLogger.info = info;
}
if(error){
_customLogger.error = error;
}
}
return _customLogger;
}
module.exports = logger;
그것이 이렇게 될 생각인가? 우리는 각 함수 호출이 분리 될 것으로 예상했습니다.
답변 해 주셔서 감사합니다. Azure 함수를 사용할 때 기본적으로 프로세스 분리가 있다고 생각했습니다 (이 경우 Serverless Architecture 아이디어는 얻을 수 있습니다). 당신이 쓴 것을 보면, 나는 로거를 싱글 톤 객체로 사용할 수 없다는 것을 이해하고이를 변경할 것입니다. 감사. –
그래, 이거 정말 안됐다. 우리가 컨텍스트를 전달하는 대신 console.log를 지원해야하는 또 다른 이유. –