programing

nodejs 로그 파일은 어디에 있습니까?

padding 2023. 10. 25. 23:07
반응형

nodejs 로그 파일은 어디에 있습니까?

nodejs 로그 파일이 저장되어 있는 장소를 찾을 수 없습니다.노드 서버에 "Segmentation fault"(세그먼트화 오류)가 있기 때문에 로그 파일에서 추가 정보를 확인하고자 합니다.

로그 파일이 없습니다.각 node.js "app"은 별개의 엔티티입니다.기본적으로 오류를 STDERR에 기록하고 STDOUT에 출력합니다.셸에서 실행하여 대신 파일에 기록할 때 이를 변경할 수 있습니다.

node my_app.js > my_app_log.log 2> my_app_err.log

또는(권장) 수동으로 또는 여러 로그 라이브러리 중 하나를 사용하여 응용프로그램 내부에 로그를 추가할 수 있습니다.

영원히 당신에게 관심이 될 수도 있습니다.로그 옵션과 함께 .js-File을 24/7로 실행합니다.다음은 도움말 텍스트에서 나온 두 가지 부분입니다.

[장기적으로 진행되는 프로세스]로그 메시지를 콘솔에 출력하는 작업은 영원히 계속됩니다.ex. forever -o out.log -err.log my-script.js

그리고.

[대몬]영원한 프로세스는 백그라운드에서 대상 프로세스를 시작하는 데몬으로 실행됩니다.이는 nohup을 사용하지 않고 단순 node.js 스크립트를 원격으로 시작하는 데 매우 유용합니다.-o-l, & -e.ex.forever start -l forever.log -o out.log -err.log my-daemon.js forever stop my-daemon.js로 시작하는 것이 좋습니다.

개발자에서 도커를 사용하는 경우 다른 셸에서 이 작업을 수행할 수 있습니다. 도커 부착 running_node_app_container_name

그러면 STDOUT과 STDERR이 나옵니다.

nodejs 로그 파일의 경우 winston과 morgan을 사용할 수 있으며 console.log() 문 사용자 winston.log() 또는 기타 winston 메서드를 사용하여 로그할 수 있습니다.winston과 morgan의 작업을 위해 npm을 사용하여 설치해야 합니다.예: npm i - S 윈스턴 npm i - 모건

그런 다음 프로젝트에서 winston이라는 이름의 폴더를 만든 다음 해당 폴더에 config.js를 만들고 아래에 주어진 코드를 복사합니다.

const appRoot = require('app-root-path');
const winston = require('winston');

// define the custom settings for each transport (file, console)
const options = {
  file: {
    level: 'info',
    filename: `${appRoot}/logs/app.log`,
    handleExceptions: true,
    json: true,
    maxsize: 5242880, // 5MB
    maxFiles: 5,
    colorize: false,
  },
  console: {
    level: 'debug',
    handleExceptions: true,
    json: false,
    colorize: true,
  },
};

// instantiate a new Winston Logger with the settings defined above
let logger;
if (process.env.logging === 'off') {
  logger = winston.createLogger({
    transports: [
      new winston.transports.File(options.file),
    ],
    exitOnError: false, // do not exit on handled exceptions
  });
} else {
  logger = winston.createLogger({
    transports: [
      new winston.transports.File(options.file),
      new winston.transports.Console(options.console),
    ],
    exitOnError: false, // do not exit on handled exceptions
  });
}

// create a stream object with a 'write' function that will be used by `morgan`
logger.stream = {
  write(message) {
    logger.info(message);
  },
};

module.exports = logger;

위의 코드를 복사한 후 winston과 평행하거나 원하는 곳에 이름 로그가 있는 폴더를 만들고 해당 로그 폴더에 app.log 파일을 만듭니다.config.js로 돌아가서 5행 "filename:"에 경로를 설정합니다.${appRoot}/logs/app.log, 당신이 만든 각각의 app.log에.

이 후 index.js로 이동하여 다음 코드를 포함합니다.

const morgan = require('morgan');
const winston = require('./winston/config');
const express = require('express');
const app = express();
app.use(morgan('combined', { stream: winston.stream }));

winston.info('You have successfully started working with winston and morgan');

언급URL : https://stackoverflow.com/questions/10815218/where-is-nodejs-log-file

반응형