• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

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

24.04.03 22:26 작성 조회수 102

1

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

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

답변 2

·

답변을 작성해보세요.

1

박민서님의 프로필

박민서

질문자

2024.04.04

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

})

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

 

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

 

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

 

감사합니다!!

0

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

 

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