refactor: 로깅 정보 개선-도메인 추가, robots.txt 사이트맵 경로 수정
This commit is contained in:
8
.cursorrules
Normal file
8
.cursorrules
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# 커밋 메시지 (Generate Commit Message 포함)
|
||||||
|
|
||||||
|
커밋 메시지는 **반드시 한글**로 작성한다.
|
||||||
|
|
||||||
|
- 형식: `feat: 내용`, `refactor: 내용`, `test: 내용` 등
|
||||||
|
- 내용은 한글로, 제목 한 줄, 변경 의도가 드러나게 간결하게
|
||||||
|
|
||||||
|
예: `feat: 회원 가입 폼 유효성 검사 추가`, `refactor: 결제 모듈 상태 관리 로직 분리`
|
||||||
@@ -19,7 +19,7 @@ export default defineNitroPlugin(nitroApp => {
|
|||||||
|
|
||||||
// 헬스체크 경로 체크 함수 추가
|
// 헬스체크 경로 체크 함수 추가
|
||||||
const isHealthCheck = (path: string): boolean => {
|
const isHealthCheck = (path: string): boolean => {
|
||||||
return path === '/health'
|
return path === '/health' || path === '/api/healthz'
|
||||||
}
|
}
|
||||||
|
|
||||||
nitroApp.hooks.hook('request', event => {
|
nitroApp.hooks.hook('request', event => {
|
||||||
@@ -33,22 +33,23 @@ export default defineNitroPlugin(nitroApp => {
|
|||||||
const method = event.method || ''
|
const method = event.method || ''
|
||||||
const headers = JSON.stringify(event.node.req.headers, null, 2)
|
const headers = JSON.stringify(event.node.req.headers, null, 2)
|
||||||
const requestId = generateRequestId()
|
const requestId = generateRequestId()
|
||||||
|
const domain = event.node.req.headers.host || 'unknown'
|
||||||
|
|
||||||
if (process.env.NODE_ENV !== 'development') {
|
// if (process.env.NODE_ENV !== 'development') {
|
||||||
console.log(
|
console.log(
|
||||||
`Request Info {"requestId":"${requestId}", "type":"request","method":"${method}","url":"${event.path}","userIp":"${getIpAddress(event)}","userAgent":"${userAgent}", "headers" : "${headers}" }`
|
`Request Info {"requestId":"${requestId}", "type":"request","method":"${method}","domain":"${domain}","url":"${event.path}","userIp":"${getIpAddress(event)}","userAgent":"${userAgent}", "headers" : "${headers}" }`
|
||||||
)
|
)
|
||||||
|
|
||||||
// 요청 완료 후 응답 상태 코드 로깅
|
// 요청 완료 후 응답 상태 코드 로깅
|
||||||
event.node.res.on('finish', () => {
|
event.node.res.on('finish', () => {
|
||||||
console.log(
|
console.log(
|
||||||
`Response Info {"requestId":"${requestId}","type":"response","method":"${method}","url":"${event.path}","statusCode":${event.node.res.statusCode},"responseTime":"${Date.now() - startTime}ms","userIp":"${getIpAddress(event)}","userAgent":"${userAgent}","statusMessage":"${event.node.res.statusMessage}","responseHeader": ${JSON.stringify(event.node.res.getHeaders(), null, 2)}}`
|
`Response Info {"requestId":"${requestId}","type":"response","method":"${method}","domain":"${domain}","url":"${event.path}","statusCode":${event.node.res.statusCode},"responseTime":"${Date.now() - startTime}ms","userIp":"${getIpAddress(event)}","userAgent":"${userAgent}","statusMessage":"${event.node.res.statusMessage}","responseHeader": ${JSON.stringify(event.node.res.getHeaders(), null, 2)}}`
|
||||||
)
|
)
|
||||||
console.log(
|
console.log(
|
||||||
'==========================================================================================================================================================================================================================================================='
|
'==========================================================================================================================================================================================================================================================='
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
}
|
// }
|
||||||
})
|
})
|
||||||
|
|
||||||
nitroApp.hooks.hook('error', error => {
|
nitroApp.hooks.hook('error', error => {
|
||||||
|
|||||||
@@ -11,32 +11,31 @@ type RobotsConfig = {
|
|||||||
export default defineEventHandler(async event => {
|
export default defineEventHandler(async event => {
|
||||||
const host =
|
const host =
|
||||||
(getHeader(event, 'host') || getRequestHost(event)).toString() || ''
|
(getHeader(event, 'host') || getRequestHost(event)).toString() || ''
|
||||||
const baseDomain = process.env.BASE_DOMAIN || '.onstove.com'
|
const baseDomain = process.env.BASE_DOMAIN
|
||||||
const isGameAliasExtractable = host.includes(baseDomain)
|
const isGameAliasExtractable = host.includes(baseDomain)
|
||||||
|
|
||||||
let gameAlias = ''
|
let gameAlias = ''
|
||||||
if (isGameAliasExtractable) {
|
if (isGameAliasExtractable) {
|
||||||
gameAlias = host.split('.')[0]
|
gameAlias = host.split('.')[0].replace(/-dev$/, '')
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (gameAlias && gameAlias !== "www") {
|
|
||||||
// event.context.gameAlias = gameAlias;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// robots 설정을 직접 가져오기 (미들웨어 context 사용)
|
|
||||||
|
|
||||||
let config: RobotsConfig
|
let config: RobotsConfig
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// robots 설정 추출
|
const staticUrl = process.env.STATIC_URL
|
||||||
|
const runType = process.env.RUN_TYPE
|
||||||
|
|
||||||
|
// gameAlias가 있을 때만 sitemap 포함
|
||||||
|
const sitemapUrl = gameAlias
|
||||||
|
? [`${staticUrl}/${runType}/template/${gameAlias}/sitemap.xml`]
|
||||||
|
: undefined
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
userAgent: '*',
|
userAgent: '*',
|
||||||
allow: ['/'],
|
allow: ['/'],
|
||||||
disallow: ['/error', '/inspection/', '/inspection/*', '/html/*'],
|
disallow: ['/error', '/inspection/*', '/html/*'],
|
||||||
sitemap: [
|
sitemap: sitemapUrl,
|
||||||
`https://static-pubcomm.gate8.com/local/template/${gameAlias}/sitemap.xml`,
|
host: gameAlias ? `${gameAlias}.onstove.com` : undefined,
|
||||||
],
|
|
||||||
host: `${gameAlias}.onstove.com`,
|
|
||||||
cache: { sMaxAge: 300, staleWhileRevalidate: 600 },
|
cache: { sMaxAge: 300, staleWhileRevalidate: 600 },
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -46,7 +45,7 @@ export default defineEventHandler(async event => {
|
|||||||
config = {
|
config = {
|
||||||
userAgent: '*',
|
userAgent: '*',
|
||||||
allow: ['/'],
|
allow: ['/'],
|
||||||
disallow: ['/error', '/inspection/', '/inspection/*', '/html/*'],
|
disallow: ['/error', '/inspection/*', '/html/*'],
|
||||||
cache: { sMaxAge: 300, staleWhileRevalidate: 600 },
|
cache: { sMaxAge: 300, staleWhileRevalidate: 600 },
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user