Skip to content

Commit f7d2416

Browse files
committed
Fix logging requests
1 parent efde256 commit f7d2416

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

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

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,32 @@ 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+
}
45+
3546
private var idleReadTimeoutStateMachine: IdleReadStateMachine?
3647
private var idleReadTimeoutTimer: Scheduled<Void>?
3748

49+
private let backgroundLogger: Logger
50+
private var logger: Logger
51+
3852
let connection: HTTP1Connection
39-
let logger: Logger
4053
let eventLoop: EventLoop
4154

4255
init(connection: HTTP1Connection, eventLoop: EventLoop, logger: Logger) {
4356
self.connection = connection
4457
self.eventLoop = eventLoop
45-
self.logger = logger
58+
self.backgroundLogger = logger
59+
self.logger = self.backgroundLogger
4660
}
4761

4862
func handlerAdded(context: ChannelHandlerContext) {
@@ -72,7 +86,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
7286

7387
func channelWritabilityChanged(context: ChannelHandlerContext) {
7488
self.logger.trace("Channel writability changed", metadata: [
75-
"writable": "\(context.channel.isWritable)",
89+
"ahc-channel-writable": "\(context.channel.isWritable)",
7690
])
7791

7892
let action = self.state.writabilityChanged(writable: context.channel.isWritable)
@@ -82,8 +96,8 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
8296
func channelRead(context: ChannelHandlerContext, data: NIOAny) {
8397
let httpPart = unwrapInboundIn(data)
8498

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

89103
if let timeoutAction = self.idleReadTimeoutStateMachine?.channelRead(httpPart) {
@@ -95,17 +109,19 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
95109
}
96110

97111
func channelReadComplete(context: ChannelHandlerContext) {
112+
self.logger.trace("Read complete caught")
113+
98114
let action = self.state.channelReadComplete()
99115
self.run(action, context: context)
100116
}
101117

102118
func write(context: ChannelHandlerContext, data: NIOAny, promise: EventLoopPromise<Void>?) {
103-
self.logger.trace("New request to execute")
104-
105119
assert(self.request == nil, "Only write to the ChannelHandler if you are sure, it is idle!")
106120
let req = self.unwrapOutboundIn(data)
107121
self.request = req
108122

123+
self.logger.trace("New request to execute")
124+
109125
if let idleReadTimeout = self.request?.idleReadTimeout {
110126
self.idleReadTimeoutStateMachine = .init(timeAmount: idleReadTimeout)
111127
}
@@ -117,7 +133,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
117133
}
118134

119135
func read(context: ChannelHandlerContext) {
120-
self.logger.trace("Read")
136+
self.logger.trace("Read event caught")
121137

122138
let action = self.state.read()
123139
self.run(action, context: context)
@@ -135,6 +151,7 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
135151
func triggerUserOutboundEvent(context: ChannelHandlerContext, event: Any, promise: EventLoopPromise<Void>?) {
136152
switch event {
137153
case HTTPConnectionEvent.cancelRequest:
154+
self.logger.trace("User outbound event triggered: Cancel request for connection close")
138155
let action = self.state.requestCancelled(closeConnection: true)
139156
self.run(action, context: context)
140157
default:
@@ -334,6 +351,8 @@ final class HTTP1ClientChannelHandler: ChannelDuplexHandler {
334351
return
335352
}
336353

354+
self.logger.trace("Request was cancelled")
355+
337356
let action = self.state.requestCancelled(closeConnection: true)
338357
self.run(action, context: context)
339358
}

Sources/AsyncHTTPClient/ConnectionPool/HTTPExecutableRequest.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ protocol HTTPRequestExecutor {
187187
}
188188

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

0 commit comments

Comments
 (0)