Skip to content

Commit 7579b95

Browse files
committed
Fix logging requests
1 parent efde256 commit 7579b95

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

Sources/AsyncHTTPClient/ConnectionPool/HTTP1.1/HTTP1ClientChannelHandler.swift

+28-10
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,31 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
3131
private var channelContext: ChannelHandlerContext?
3232

3333
/// the currently executing request
34-
private var request: HTTPExecutableRequest?
34+
private var request: HTTPExecutableRequest? {
35+
didSet {
36+
if let request = request {
37+
var requestLogger = request.logger
38+
requestLogger[metadataKey: "ahc-connection-id"] = "\(self.connection.id)"
39+
self.logger = requestLogger
40+
} else {
41+
self.logger = self.backgroundLogger
42+
}
43+
}
44+
}
3545
private var idleReadTimeoutStateMachine: IdleReadStateMachine?
3646
private var idleReadTimeoutTimer: Scheduled<Void>?
37-
47+
48+
private let backgroundLogger: Logger
49+
private var logger: Logger
50+
3851
let connection: HTTP1Connection
39-
let logger: Logger
4052
let eventLoop: EventLoop
4153

4254
init(connection: HTTP1Connection, eventLoop: EventLoop, logger: Logger) {
4355
self.connection = connection
4456
self.eventLoop = eventLoop
45-
self.logger = logger
57+
self.backgroundLogger = logger
58+
self.logger = self.backgroundLogger
4659
}
4760

4861
func handlerAdded(context: ChannelHandlerContext) {
@@ -72,7 +85,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
7285

7386
func channelWritabilityChanged(context: ChannelHandlerContext) {
7487
self.logger.trace("Channel writability changed", metadata: [
75-
"writable": "\(context.channel.isWritable)",
88+
"ahc-channel-writable": "\(context.channel.isWritable)",
7689
])
7790

7891
let action = self.state.writabilityChanged(writable: context.channel.isWritable)
@@ -82,8 +95,8 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
8295
func channelRead(context: ChannelHandlerContext, data: NIOAny) {
8396
let httpPart = unwrapInboundIn(data)
8497

85-
self.logger.trace("Message received", metadata: [
86-
"message": "\(httpPart)",
98+
self.logger.trace("HTTP response part received", metadata: [
99+
"ahc-http-part": "\(httpPart)",
87100
])
88101

89102
if let timeoutAction = self.idleReadTimeoutStateMachine?.channelRead(httpPart) {
@@ -95,16 +108,18 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
95108
}
96109

97110
func channelReadComplete(context: ChannelHandlerContext) {
111+
self.logger.trace("Read complete caught")
112+
98113
let action = self.state.channelReadComplete()
99114
self.run(action, context: context)
100115
}
101116

102117
func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise<Void>?) {
103-
self.logger.trace("New request to execute")
104-
105118
assert(self.request == nil, "Only write to the ChannelHandler if you are sure, it is idle!")
106119
let req = self.unwrapOutboundIn(data)
107120
self.request = req
121+
122+
self.logger.trace("New request to execute")
108123

109124
if let idleReadTimeout = self.request?.idleReadTimeout {
110125
self.idleReadTimeoutStateMachine = .init(timeAmount: idleReadTimeout)
@@ -117,7 +132,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
117132
}
118133

119134
func read(context: ChannelHandlerContext) {
120-
self.logger.trace("Read")
135+
self.logger.trace("Read event caught")
121136

122137
let action = self.state.read()
123138
self.run(action, context: context)
@@ -135,6 +150,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
135150
func triggerUserOutboundEvent(context: ChannelHandlerContext, event: Any, promise: EventLoopPromise<Void>?) {
136151
switch event {
137152
case HTTPConnectionEvent.cancelRequest:
153+
self.logger.trace("User outbound event triggered: Cancel request for connection close")
138154
let action = self.state.requestCancelled(closeConnection: true)
139155
self.run(action, context: context)
140156
default:
@@ -333,6 +349,8 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
333349
// See code comment in `writeRequestBodyPart0`
334350
return
335351
}
352+
353+
self.logger.trace("Request was cancelled")
336354

337355
let action = self.state.requestCancelled(closeConnection: true)
338356
self.run(action, context: context)

Sources/AsyncHTTPClient/ConnectionPool/HTTPExecutableRequest.swift

+4
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ protocol HTTPRequestExecutor {
187187
}
188188

189189
protocol HTTPExecutableRequest: AnyObject {
190+
191+
/// The request's logger
192+
var logger: Logger { get }
193+
190194
/// The request's head.
191195
///
192196
/// The HTTP request head, that shall be sent. The HTTPRequestExecutor **will not** run any validation

0 commit comments

Comments
 (0)