inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기

winston을 통한 로깅 설정 및 서버 시작하기

app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됨

해결된 질문

335

박민서

작성한 질문수 1

1

app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됩니다. 포트 충돌 문제인가 해서 8080 포트 죽여보고 9090으로 바꿨는데도 안됩니다. ㅜ

[winston을 통한 로깅 설정 및 서버 시작하기] 수강 중입니다.

node.js websockets

답변 2

1

박민서

1. winston.js 2. app js 입니다!

/*  winston과 winston-daily-rotate-file 라이브러리를 사용하여 로그 관리 시스템을 설정함
    winston :  로깅 범용 라이브러리
    winston-daily-rotate-file: 로그 파일을 일별로 자동 분할하는 추가적인 기능을 제공하는 트랜스포트 (로그 출력 방식을 결정하는 컴포넌트)

*/

const { createLogger, format, transports } = require("winston");
const winstonDaily = require("winston-daily-rotate-file");

//  로그 파일을 저장할 디렉토리를 지정
const logDir = "logs";

//  로그 메시지의 포맷을 정의, (timestamp, level, message)
const logFormat = format.printf((info) => {
  return `${info.timestamp} ${info.level} : ${info.message}`;
});

// 로거 인스턴스 생성
const SocketLogger = createLogger({
  format: format.combine(
    format.timestamp({
      format: "YYYY-MM-DD HH:mm:ss",
    }),
    logFormat
  ),

  // 로그 출력 대상 설정 , 트랜스포트들의 객체
  transports: [
    new winstonDaily({
      fileName: "socket.log-info.log",
      datePattern: "YYYY-MM-DD",
      dirname: logDir + "/socket",
      level: "info",
    }),

    new winstonDaily({
      fileName: "socket.err.log",
      datePattern: "YYYY-MM-DD",
      dirname: logDir + "/socket",
      level: "error",
    }),
  ],
});

SocketLogger.add(
    new transports.Console({
        format: format.combine(format.colorize(), format.simple()),
    })
);

module.exports = {SocketLogger};
// Express, HTTP, WebSocket, (CORS (cross_origin resource_sharing):교차 출처 리소스 공유)를 사용하여 기초 애플리케이션을 설정

// const express = require("express"); //  애플리케이션을 위한 빠르고 개방적인 웹 프레임워크
const http = require("http"); //  서버 생성 및 HTTP 요청 관리에 사용
const cors = require("cors"); // 다른 도메인에서 실행 중인 웹 페이지가 현재 웹 페이지와 상호 작용할 수 있게 함 
const WebSocket = require("ws"); //  실시간 양방향 통신을 가능하게 하는 WebSocket 라이브러리
const { SocketLogger } = require("./logs/winston");


// const app = express();

// app.use(
//     cors({
//         origin:"*",
//     })
// )

// app.use(express.json());
// app.use(express.urlencoded({extended: false}));

const server = http.createServer();
const wss = new WebSocket.Server({server});

const PORT = process.env.PORT || 8080;
server.listen(PORT, () => {
    SocketLogger.info(`Server Started on port = ${PORT}`);

})

1

July

로그는 하나만 뜨는게 당연해보입니다.

 

지금 보시면 서버를 구동하였을 때 그때에만 로그를 기록하고 있습니다.

 

소켓 통신까지 구현해보시고 해당 요청에 로깅을 추가하시면 좀 더 다양한 로그를 보실 수 있을겁니다.

 

감사합니다!!

0

July

한번만 호출이되는 상황이라는 정보만으로는 제가 알 수있는 정보가 적어서 정확한 답변을 드리기 어려울꺼 같습니다.

 

혹시 현재 app.js 소스코드와 로그관리를 하는 js 코드를 올려주실 수 있을까요??

2강 nodejs 3단계 설명 질문

0

6

0

useEffect와 lifecycle문의

0

20

2

프론트엔드 학습 수준 문의

0

28

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

43

2

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

36

1

데이터 로딩중 화면만 계속 나와요!!

0

51

2

Streaming 중인 서비스에서 모든 파드에 broadcast하는 방법

0

118

3

프론트쪽이 리액트로 되어있는데요..

0

123

2

오늘 강의 듣기 시작했는데요!

0

132

2

RunInit() 관련 질문

0

180

5

소켓 연결과 http

0

154

2

학습자료는 어디서 받나요?

1

200

1

현재 강의에서 재생관련 문제가 있어서 전달드립니다.

1

202

2

강의에 음성만 나오고 영상이 나오질 않습니다 ㅠ

0

142

1

데이터 불러오기

1

143

1

panic 사용

1

116

1

defer 사용

1

129

1

nodejs 파일이 프론트엔디 파일인가요??

0

220

1

채팅 메시지 DB로 저장 하기.

1

843

2

채팅이 2번씩 전송되는 현상 질문

1

314

1

뭔가 중간에 오타를 쳤는지 오류가 자꾸 발생하는데 혹시 go 소스코드 볼수있는곳 있나요?

1

247

1

다른 질문을 읽고 궁금한 점이 생겼습니다.

1

303

1

소켓 서버의 수평적 확장 및 무중단 배포에 대해 질문드립니다!

3

1304

2

몇천명이 Room 에 동시접속할 수 있도록 설계하려면 어떤 것들이 필요할까요?

1

473

2