inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Học cách xây dựng giao tiếp WebSocket để xử lý TPS chat lớn

Thiết lập ghi nhật ký và khởi động máy chủ với Winston

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

Đã giải quyết

336

qkralstj081745

1 câu hỏi đã được viết

1

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

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

node.js websockets

Câu trả lời 2

1

qkralstj081745

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 코드를 올려주실 수 있을까요??

3강 질문

0

18

1

2강 nodejs 3단계 설명 질문

0

33

1

useEffect와 lifecycle문의

0

26

2

프론트엔드 학습 수준 문의

0

38

2

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

0

48

2

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

36

1

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

0

118

3

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

0

123

2

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

0

132

2

RunInit() 관련 질문

0

181

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

221

1

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

1

843

2

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

1

314

1

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

1

247

1

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

1

303

1

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

3

1306

2

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

1

473

2