더북(TheBook)

우리가 만든 마이크로서비스 아키텍처에 로그를 관리하는 마이크로서비스를 추가하겠습니다. 로그 입력 기능만 있습니다.

코드 12-1 로그 관리 마이크로서비스

예제 파일 : microservice_logs.js

'use strict';

const cluster = require('cluster');

class logs extends require('./server.js') {
    constructor() {
        super("logs"  // ➊ POST/logs 한 가지 기능만 가지도록 함
            , process.argv[2] ? Number(process.argv[2]) : 9040
            , ["POST/logs"]
        );

        this.connectToDistributor("127.0.0.1", 9000, (data) => {
            console.log("Distributor Notification", data);
        });
    }

    onRead(socket, data) {  // ➋ 로그가 입력되면 화면에 출력
        const sz = new Date().toLocaleString() + '\t' + socket.remoteAddress + '\t' +
                   socket.remotePort + '\t' + JSON.stringify(data) + '\n';
        console.log(sz);
    }
}

if (cluster.isMaster) {
    cluster.fork();

    cluster.on('exit', (worker, code, signal) => {
        console.log(`worker ${worker.process.pid} died`);
        cluster.fork();
    });
} else {
    new logs();
}

이전에 만든 마이크로서비스와 동일한 패턴으로 로그 관리 마이크로서비스를 만듭니다. 이름은 logs로 설정하고, 기본 포트 정보는 9040으로 지정하며, 기능은 로그 입력만 구현합니다(). API가 호출되면 화면에는 시간과 접속한 마이크로서비스의 주소 정보, 입력한 로그를 출력합니다().

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.