해결된 질문
작성
·
257
1
app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됩니다. 포트 충돌 문제인가 해서 8080 포트 죽여보고 9090으로 바꿨는데도 안됩니다. ㅜ
[winston을 통한 로깅 설정 및 서버 시작하기] 수강 중입니다.
답변 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}`);
})
0
한번만 호출이되는 상황이라는 정보만으로는 제가 알 수있는 정보가 적어서 정확한 답변을 드리기 어려울꺼 같습니다.
혹시 현재 app.js 소스코드와 로그관리를 하는 js 코드를 올려주실 수 있을까요??
로그는 하나만 뜨는게 당연해보입니다.
지금 보시면 서버를 구동하였을 때 그때에만 로그를 기록하고 있습니다.
소켓 통신까지 구현해보시고 해당 요청에 로깅을 추가하시면 좀 더 다양한 로그를 보실 수 있을겁니다.
감사합니다!!