Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
message-call-service
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
邵兴业
message-call-service
Commits
d4f00758
Commit
d4f00758
authored
Jul 28, 2021
by
Sxy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 日志
parent
b9ec8199
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
96 additions
and
21 deletions
+96
-21
app.js
+10
-4
client/rabbitmq.js
+2
-1
package.json
+0
-0
utils/axios.js
+21
-2
utils/logger.js
+63
-10
utils/rabbitmq.js
+0
-4
No files found.
app.js
View file @
d4f00758
...
...
@@ -4,7 +4,7 @@ import views from 'koa-views'
import
json
from
'koa-json'
import
onerror
from
'koa-onerror'
import
bodyparser
from
'koa-bodyparser'
import
logger
from
'koa-logger'
//
import logger from 'koa-logger'
import
parameter
from
'koa-parameter'
import
moment
from
"moment"
...
...
@@ -18,6 +18,9 @@ const logNameSpace = createNamespace('logger')
import
index
from
'./routes/index'
import
test
from
'./routes/test'
import
logger
from
"./utils/logger"
...
...
@@ -30,7 +33,7 @@ app.use(bodyparser({
}))
app
.
use
(
parameter
(
app
))
app
.
use
(
json
())
app
.
use
(
logger
())
//
app.use(logger())
app
.
use
(
require
(
'koa-static'
)(
__dirname
+
'/public'
))
app
.
use
(
views
(
__dirname
+
'/views'
,
{
...
...
@@ -44,8 +47,11 @@ app.use(correlation(logNameSpace));
app
.
use
(
async
(
ctx
,
next
)
=>
{
const
start
=
new
Date
()
await
next
()
const
ms
=
new
Date
()
-
start
console
.
log
(
`
${
moment
().
format
(
"YYYY-MM-DD HH:mm:ss"
)}
${
logNameSpace
.
get
(
"requestId"
)}
${
ctx
.
method
}
${
ctx
.
url
}
-
${
ms
}
ms`
)
logger
.
info
({
request
:
ctx
.
request
,
response
:
ctx
.
body
,
useTime
:
new
Date
()
-
start
})
})
// routes
...
...
client/rabbitmq.js
View file @
d4f00758
...
...
@@ -25,13 +25,14 @@ class RabbitmqClient {
this
.
connnection
.
on
(
"close"
,
(
err
)
=>
{
logger
.
info
(
"[x]Rabbitmq is closed "
,
err
);
this
.
connnection
=
null
;
process
.
exit
(
1
)
});
process
.
once
(
'SIGINT'
,
this
.
connnection
.
close
.
bind
(
this
.
connnection
));
}
return
this
.
connnection
;
}
catch
(
err
)
{
logger
.
info
(
"--- MQ 连接 失败 ------"
);
logger
.
info
(
err
);
logger
.
error
(
err
);
process
.
exit
(
1
)
}
}
...
...
package.json
View file @
d4f00758
utils/axios.js
View file @
d4f00758
import
axios
from
"axios"
import
{
v4
as
uuidv4
}
from
'uuid'
import
{
getNamespace
}
from
'cls-hooked'
;
import
logger
from
"../utils/logger"
/**
* 请求参数 要求
* url
...
...
@@ -16,8 +20,10 @@ import { v4 as uuidv4 } from 'uuid'
* message 成功时返回 null ,失败时返回具体错误消息
*/
export
async
function
request
(
message
)
{
try
{
const
{
url
,
method
=
"POST"
,
headers
=
{},
params
=
{},
data
=
{},
timeout
=
5
}
=
message
;
const
start
=
new
Date
()
try
{
const
logNameSpace
=
getNamespace
(
'logger'
);
const
response
=
await
axios
({
method
,
url
,
...
...
@@ -26,14 +32,26 @@ export async function request(message) {
timeout
:
timeout
*
1000
,
headers
:
{
'Content-Type'
:
'application/json'
,
"X-Request-Id"
:
uuidv4
(),
"X-Request-Id"
:
(
logNameSpace
&&
logNameSpace
.
get
(
"requestId"
))
||
uuidv4
(),
...
headers
}
});
if
(
response
.
data
.
code
!==
0
)
{
throw
new
Error
(
response
.
data
.
message
)
}
logger
.
info
({
request
:
message
,
response
:
response
.
data
,
usedTime
:
new
Date
()
-
start
,
requestId
:
headers
[
"X-Request-Id"
]
})
}
catch
(
err
)
{
logger
.
error
({
request
:
message
,
response
:
err
.
message
,
usedTime
:
new
Date
()
-
start
,
requestId
:
headers
[
"X-Request-Id"
]
})
throw
new
Error
(
err
.
message
);
}
}
\ No newline at end of file
utils/logger.js
View file @
d4f00758
import
{
createLogger
,
format
,
transports
}
from
'winston'
;
import
'winston-daily-rotate-file'
;
import
{
getNamespace
}
from
'cls-hooked'
;
const
myFormat
=
format
.
printf
(({
level
,
message
,
timestamp
})
=>
{
const
loggerNamespace
=
getNamespace
(
'logger'
);
return
`[
${
timestamp
}
] [
${
level
}
]
${
loggerNamespace
.
get
(
'requestId'
)
?
(
"["
+
loggerNamespace
.
get
(
'requestId'
)
+
"] :"
)
:
''
}
${
message
}
`
;
import
os
from
'os'
const
myFormat
=
format
.
printf
(({
level
,
message
,
timestamp
,
requestId
})
=>
{
return
`[
${
timestamp
}
] [
${
level
}
]
${
requestId
?
(
"["
+
requestId
+
"] :"
)
:
''
}
${
message
}
`
;
});
const
requestId
=
format
((
info
)
=>
{
let
{
message
}
=
info
;
const
loggerNamespace
=
getNamespace
(
'logger'
);
let
requestId
=
loggerNamespace
.
get
(
'requestId'
);
if
(
!
requestId
&&
Object
.
prototype
.
toString
.
call
(
message
)
===
"[object Object]"
&&
message
.
requestId
)
{
requestId
=
message
.
requestId
}
info
.
requestId
=
requestId
||
'-'
info
.
message
=
JSON
.
stringify
(
message
)
return
info
})
import
path
from
"path"
const
logger
=
createLogger
({
level
:
'info'
,
defaultMeta
:
{
serverName
:
os
.
hostname
(),
},
format
:
format
.
combine
(
format
.
timestamp
(),
format
.
splat
(),
myFormat
,
format
.
json
()
requestId
(),
format
.
json
(),
),
transports
:
[
new
transports
.
Console
(),
new
transports
.
File
({
dirname
:
'./logs'
,
filename
:
`test.log`
,
new
transports
.
DailyRotateFile
({
filename
:
path
.
join
(
__dirname
,
'../'
,
'logs'
,
`info_%DATE%.log`
),
datePattern
:
'YYYY-MM-DD'
,
maxSize
:
'10M'
,
maxFiles
:
'30d'
,
zippedArchive
:
true
,
level
:
"info"
}),
new
transports
.
DailyRotateFile
({
filename
:
path
.
join
(
__dirname
,
'../'
,
'logs'
,
`error_%DATE%.log`
),
datePattern
:
'YYYY-MM-DD'
,
maxSize
:
'10M'
,
maxFiles
:
'30d'
,
zippedArchive
:
true
,
level
:
"error"
}),
new
transports
.
DailyRotateFile
({
filename
:
path
.
join
(
__dirname
,
'../'
,
'logs'
,
`warn_%DATE%.log`
),
datePattern
:
'YYYY-MM-DD'
,
maxSize
:
'10M'
,
maxFiles
:
'30d'
,
zippedArchive
:
true
,
level
:
"warn"
})
],
});
if
(
process
.
env
.
NODE_ENV
!==
'production'
)
{
logger
.
add
(
new
transports
.
Console
({
format
:
format
.
combine
(
format
.
colorize
(
{
//各种日志的颜色
colors
:
{
info
:
'blue'
,
error
:
'red'
,
warn
:
"yellow"
},
all
:
true
,
}
),
format
.
simple
(),
myFormat
,
)
}));
}
export
default
logger
;
\ No newline at end of file
utils/rabbitmq.js
View file @
d4f00758
...
...
@@ -82,8 +82,6 @@ async function listenCustomerLadderQueue() {
channel
.
ack
(
msg
);
}
else
{
// 重试次数用完还是失败
logger
.
error
(
"------ 重试 发送消息 彻底 ERROR ------"
)
logger
.
error
(
msg
.
content
.
toString
());
channel
.
ack
(
msg
);
}
}
...
...
@@ -165,8 +163,6 @@ async function listenCustomerQueue() {
await
request
(
content
);
channel
.
ack
(
msg
);
}
catch
(
err
)
{
logger
.
error
(
"------ 延时 发送消息 彻底 ERROR ------"
)
logger
.
error
(
msg
.
content
.
toString
());
channel
.
ack
(
msg
);
}
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment