강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của qkralstj081745
qkralstj081745

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

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

Viết

·

325

1

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

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

node.jswebsockets

Câu trả lời 2

1

qkralstj081745님의 프로필 이미지
qkralstj081745
Người đặt câu hỏi

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}`);

})
July님의 프로필 이미지
July
Người chia sẻ kiến thức

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

 

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

 

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

 

감사합니다!!

0

July님의 프로필 이미지
July
Người chia sẻ kiến thức

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

 

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

Hình ảnh hồ sơ của qkralstj081745
qkralstj081745

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

Đặt câu hỏi