@@ -7,6 +7,7 @@ import UserController from "./controllers/UserController"
77import SearchController from "./controllers/SearchController"
88import RecipeController from "./controllers/RecipeController"
99import { elasticSearchClient } from "./elasticSearchClient"
10+ import { client } from "./db.server"
1011import type { paths } from "../../types/openapi-types"
1112
1213const app = express ( )
@@ -31,7 +32,7 @@ function logBodyGen(prependStr: string, getBodyFunc: (req: any, res: any) => str
3132 const status = res . statusCode
3233 const body = getBodyFunc ( req , res )
3334 const timeStamp = new Date ( ) . toISOString ( )
34- return `[${ timeStamp } ] ${ method } ${ url } ${ status } ${ prependStr } : ${ JSON . stringify ( body ) } `
35+ return `[${ timeStamp } ] ${ method } ${ url } ${ status } ${ prependStr } ${ JSON . stringify ( body ) } `
3536 } )
3637 return bodyFormatName
3738}
@@ -45,9 +46,78 @@ appResponsePrototype.send = function sendOverWrite(body: any) {
4546 this [ morganBodyResponseSymbol ] = body
4647}
4748
48- app . use ( morgan ( "[:date[iso]] :method :url :status ResponseTime :response-time ms" ) )
49- app . use ( morgan ( logBodyGen ( "RequestBody" , ( req ) => req . body ) ) )
50- app . use ( morgan ( logBodyGen ( "ResponseBody" , ( _req , res ) => res [ morganBodyResponseSymbol ] ) ) )
49+ app . use (
50+ morgan ( "[:date[iso]] :method :url :status ResponseTime(ms) :response-time" , {
51+ stream : {
52+ write : async ( message ) => {
53+ console . log ( message . split ( " " ) )
54+ const [ requestedAt , method , url , status , logType , logMessage ] = message . split ( " " )
55+ await client . logs . create ( {
56+ data : {
57+ requestedAt : new Date ( requestedAt . replace ( / \[ | \] / g, "" ) ) ,
58+ method,
59+ url,
60+ status : parseInt ( status ) ,
61+ logType,
62+ message : logMessage ,
63+ } ,
64+ } )
65+ } ,
66+ } ,
67+ } )
68+ )
69+ app . use (
70+ morgan (
71+ logBodyGen ( "RequestBody" , ( req ) => req . body ) ,
72+ {
73+ stream : {
74+ write : async ( message ) => {
75+ console . log ( message )
76+ const [ requestedAt , method , url , status , logType , logMessage ] = message . split ( " " )
77+ if ( url !== "/api/recipes/search" ) {
78+ return
79+ }
80+ await client . logs . create ( {
81+ data : {
82+ requestedAt : new Date ( requestedAt . replace ( / \[ | \] / g, "" ) ) ,
83+ method,
84+ url,
85+ status : parseInt ( status ) ,
86+ logType,
87+ message : logMessage ,
88+ } ,
89+ } )
90+ } ,
91+ } ,
92+ }
93+ )
94+ )
95+ app . use (
96+ morgan (
97+ logBodyGen ( "ResponseBody" , ( _req , res ) => res [ morganBodyResponseSymbol ] ) ,
98+ {
99+ stream : {
100+ write : async ( message ) => {
101+ console . log ( message )
102+ const [ requestedAt , method , url , status , logType , logMessage ] = message . split ( " " )
103+ if ( url !== "/api/recipes/search" ) {
104+ return
105+ }
106+ await client . logs . create ( {
107+ data : {
108+ requestedAt : new Date ( requestedAt . replace ( / \[ | \] / g, "" ) ) ,
109+ method,
110+ url,
111+ status : parseInt ( status ) ,
112+ logType,
113+ message : logMessage ,
114+ } ,
115+ } )
116+ } ,
117+ } ,
118+ }
119+ )
120+ )
51121
52122app . get ( "/" , ( _req , res ) => {
53123 res . status ( 200 ) . send ( "Hello, world!" )
0 commit comments