auto commit
This commit is contained in:
parent
675197902e
commit
b74849b1e1
fems-api/src/services
fems-realtime-api/src
@ -1,7 +1,7 @@
|
|||||||
// src/services/permission.service.js
|
// src/services/permission.service.js
|
||||||
const { Role, UserRole, User } = require("../models");
|
const { Role, UserRole, User } = require("../models");
|
||||||
const redis = require("../config/redis");
|
const redis = require("../config/redis");
|
||||||
const logger = require("../utils/logger");
|
const logger = require("./config/logger");
|
||||||
|
|
||||||
class PermissionService {
|
class PermissionService {
|
||||||
constructor() {
|
constructor() {
|
||||||
|
@ -6,7 +6,8 @@ const MainBackendService = require("./services/mainBackend.service");
|
|||||||
const MQTTService = require("./services/mqtt.service");
|
const MQTTService = require("./services/mqtt.service");
|
||||||
const SensorDataModel = require("./models/SensorData");
|
const SensorDataModel = require("./models/SensorData");
|
||||||
const createDataController = require("./controllers/data.controller");
|
const createDataController = require("./controllers/data.controller");
|
||||||
const logger = require("./utils/logger");
|
// 다른 서비스나 컨트롤러 파일들
|
||||||
|
const logger = require("./config/logger");
|
||||||
const config = require("./config/config");
|
const config = require("./config/config");
|
||||||
|
|
||||||
async function bootstrap() {
|
async function bootstrap() {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
// fems-realtime-api/src/middleware/apiKey.middleware.js
|
// fems-realtime-api/src/middleware/apiKey.middleware.js
|
||||||
const logger = require("../utils/logger");
|
const logger = require("./config/logger");
|
||||||
|
|
||||||
const apiKeyAuth = async (req, res, next) => {
|
const apiKeyAuth = async (req, res, next) => {
|
||||||
const apiKey = req.header("X-API-Key");
|
const apiKey = req.header("X-API-Key");
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// fems-realtime-api/src/services/mainBackend.service.js
|
// fems-realtime-api/src/services/mainBackend.service.js
|
||||||
const axios = require("axios");
|
const axios = require("axios");
|
||||||
const logger = require("../utils/logger");
|
const logger = require("./config/logger");
|
||||||
|
|
||||||
class MainBackendService {
|
class MainBackendService {
|
||||||
constructor(redis, baseURL, adminApiKey) {
|
constructor(redis, baseURL, adminApiKey) {
|
||||||
@ -16,21 +16,21 @@ class MainBackendService {
|
|||||||
async checkSubscription(companyId) {
|
async checkSubscription(companyId) {
|
||||||
try {
|
try {
|
||||||
// Redis에서 캐시된 구독 상태 확인
|
// Redis에서 캐시된 구독 상태 확인
|
||||||
const cached = await this.redis.get(`subscription:${companyId}`);
|
const cached = await this.redis.get(`contracts:${companyId}`);
|
||||||
if (cached) {
|
if (cached) {
|
||||||
return JSON.parse(cached);
|
return JSON.parse(cached);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 메인 백엔드에서 구독 상태 조회
|
// 메인 백엔드에서 구독 상태 조회
|
||||||
const response = await this.client.get(
|
const response = await this.client.get(
|
||||||
`/api/v1/admin/subscription/companies/${companyId}/subscription/status`
|
`/api/v1/admin/contracts/companies/${companyId}/subscription/status`
|
||||||
);
|
);
|
||||||
|
|
||||||
const status = response.data;
|
const status = response.data;
|
||||||
|
|
||||||
// 구독 상태 캐싱 (1시간)
|
// 구독 상태 캐싱 (1시간)
|
||||||
await this.redis.set(
|
await this.redis.set(
|
||||||
`subscription:${companyId}`,
|
`contracts:${companyId}`,
|
||||||
JSON.stringify(status),
|
JSON.stringify(status),
|
||||||
"EX",
|
"EX",
|
||||||
3600
|
3600
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
// fems-realtime-api/src/services/mqtt.service.js
|
// fems-realtime-api/src/services/mqtt.service.js
|
||||||
const mqtt = require("mqtt");
|
const mqtt = require("mqtt");
|
||||||
const logger = require("../utils/logger");
|
const logger = require("./config/logger");
|
||||||
|
|
||||||
class MQTTService {
|
class MQTTService {
|
||||||
constructor(mainBackend, sensorData, redis, brokerUrl, options) {
|
constructor(mainBackend, sensorData, redis, brokerUrl, options) {
|
||||||
|
@ -1,59 +0,0 @@
|
|||||||
// src/utils/logger.js
|
|
||||||
const winston = require("winston");
|
|
||||||
const { createLogger, format, transports } = winston;
|
|
||||||
const { combine, timestamp, printf, colorize } = format;
|
|
||||||
|
|
||||||
// 로그 포맷 정의
|
|
||||||
const logFormat = printf(({ level, message, timestamp, ...metadata }) => {
|
|
||||||
let msg = `${timestamp} [${level}] : ${message}`;
|
|
||||||
|
|
||||||
if (Object.keys(metadata).length > 0) {
|
|
||||||
msg += JSON.stringify(metadata);
|
|
||||||
}
|
|
||||||
|
|
||||||
return msg;
|
|
||||||
});
|
|
||||||
|
|
||||||
// 로거 생성
|
|
||||||
const logger = createLogger({
|
|
||||||
format: combine(timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), logFormat),
|
|
||||||
transports: [
|
|
||||||
// 콘솔 출력
|
|
||||||
new transports.Console({
|
|
||||||
format: combine(colorize(), logFormat),
|
|
||||||
}),
|
|
||||||
// 에러 로그 파일
|
|
||||||
new transports.File({
|
|
||||||
filename: "logs/error.log",
|
|
||||||
level: "error",
|
|
||||||
}),
|
|
||||||
// 전체 로그 파일
|
|
||||||
new transports.File({
|
|
||||||
filename: "logs/combined.log",
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 감사 로그를 위한 별도 로거
|
|
||||||
const auditLogger = createLogger({
|
|
||||||
format: combine(
|
|
||||||
timestamp(),
|
|
||||||
printf(({ message, timestamp, ...metadata }) => {
|
|
||||||
return JSON.stringify({
|
|
||||||
timestamp,
|
|
||||||
...message,
|
|
||||||
...metadata,
|
|
||||||
});
|
|
||||||
})
|
|
||||||
),
|
|
||||||
transports: [
|
|
||||||
new transports.File({
|
|
||||||
filename: "logs/audit.log",
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
logger,
|
|
||||||
auditLogger,
|
|
||||||
};
|
|
Loading…
Reference in New Issue
Block a user