윈도우 기준
Docker 컨테이너 사용
https://docs.datadoghq.com/ko/containers/docker/?tab=standard
윈스턴+모건 -> datadog
DD_ENV="prod"
DD_LOGS_INJECTION=true
DD_TRACE_SAMPLE_RATE="1"
DD_PROFILING_ENABLED=true
DD_APPSEC_ENABLED=true
DD_IAST_ENABLED=true
DATADOG_API_KEY_DEV=<api key>
logs_enabled: true
logs:
- type: file
path: <nodejs log 파일>
service: myapplication
source: nodejs
sourcecategory: sourcecode
설정이 완료되었다면
파워쉘에서 데이타독 서비스를 재실행해주면 된다.
net stop datadogagent
net start datadogagent
위의 conf.yml
가 제대로 되었다면.
대시보드의 Logs에서 로그 활성화가 가능해진다.
express 간단한 엔드포인트로 확인해보자.
const express = require("express");
const morgan = require("morgan");
const winston = require("winston");
const tracer = require("dd-trace").init({
logInjection: true,
});
const fs = require("fs");
const path = require("path");
const dotenv = require("dotenv");
// 로그 파일 설정
const logDirectory = path.join(__dirname, "log");
console.log("logDirectory :", logDirectory);
fs.existsSync(logDirectory) || fs.mkdirSync(logDirectory);
const logger = winston.createLogger({
level: "info",
format: winston.format.json(),
transports: [
new winston.transports.File({
filename: path.join(logDirectory, "app.log"),
}),
],
});
const main = () => {
dotenv.config();
const app = express();
// Morgan을 사용하여 HTTP 요청 로그를 winston에 연결
app.use(
morgan("combined", { stream: { write: (message) => logger.info(message) } })
);
app.get("/test", (req, res) => {
res.json({
msg: "test",
});
});
app.get("/test2", (req, res) => {
throw new Error("ㅅㄷㄴㅅ");
res.json({
msg: "test",
});
});
app.listen(3000, () => {
console.log("서버 열림");
});
};
if (require.main === module) {
main();
}
생성해둔 대시보드-로그 스트림에서 확인이 가능하다.
expressjs를 사용한 간단한 node api logging을 해보았습니다.
nestjs ddtrace 라이브러리를 사용하면 nestjs에서도 사용이 가능합니다.