app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됨
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}`); })