Skip to content

Commit 3955eb5

Browse files
committed
Include Depth header in method logs
...
1 parent f138d7e commit 3955eb5

File tree

1 file changed

+26
-7
lines changed

1 file changed

+26
-7
lines changed

Sources/connect/Logger.swift

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,8 @@ public func logger(_ format: String? = nil, level: Logger.Level = .info,
8585
switch fmt {
8686
case formats["short"]!:
8787
msg += "\(info.remoteAddr) -"
88-
msg += " \"\(req.method) \(url) HTTP/\(req.httpVersion)\""
88+
msg += " \"\(info.methodWithDepth) \(url)"
89+
msg += " HTTP/\(req.httpVersion)\""
8990
msg += " \(info.status) \(info.clen)"
9091
msg += " - \(info.responseTime) ms"
9192

@@ -95,15 +96,16 @@ public func logger(_ format: String? = nil, level: Logger.Level = .info,
9596
msg += " - \(info.paddedResponseTime) ms"
9697

9798
case formats["tiny"]!:
98-
msg += "\(req.method) \(url)"
99+
msg += "\(info.methodWithDepth) \(url)"
99100
msg += " \(info.status) \(info.clen)"
100101
msg += " - \(info.responseTime) ms"
101102

102103
case formats["default"]!:
103104
fallthrough
104105
default:
105106
msg += "\(info.remoteAddr) - - [\(info.date)]"
106-
msg += " \"\(req.method) \(url) HTTP/\(req.httpVersion)\""
107+
msg += " \"\(info.methodWithDepth) \(url)"
108+
msg += " HTTP/\(req.httpVersion)\""
107109
msg += " \(info.status) \(info.clen)"
108110
msg += " \(info.qReferrer) \(info.qUA)"
109111
}
@@ -141,6 +143,21 @@ private struct LogInfoProvider {
141143
let url : String
142144
let diff : Int
143145
let noval = "-"
146+
147+
/// Method with depth suffix. Always shown if the Depth header is
148+
/// present; for PROPFIND/REPORT a missing header logs ":-".
149+
var methodWithDepth : String {
150+
let m = req.method
151+
if let raw = req.headers["Depth"].first {
152+
let d = raw.trimmingCharacters(in: .whitespaces)
153+
if d.caseInsensitiveCompare("infinity") == .orderedSame {
154+
return "\(m):*"
155+
}
156+
return "\(m):\(d)"
157+
}
158+
if m == "PROPFIND" || m == "REPORT" { return "\(m):-" }
159+
return m
160+
}
144161

145162
var remoteAddr : String {
146163
guard let sock = req.socket else { return noval }
@@ -200,12 +217,14 @@ private struct LogInfoProvider {
200217

201218
static var methodPadLen = 4
202219
var paddedMethod : String {
203-
let m = "\(req.method)"
204-
let len = m.count
205-
if len > LogInfoProvider.methodPadLen { LogInfoProvider.methodPadLen = len }
220+
let m = methodWithDepth
221+
let len = m.count
222+
if len > LogInfoProvider.methodPadLen {
223+
LogInfoProvider.methodPadLen = len
224+
}
206225
let padlen = LogInfoProvider.methodPadLen
207226
let pad = String(repeating: " ", count: max(padlen - len, 0))
208-
return "\(req.method)\(pad)"
227+
return "\(m)\(pad)"
209228
}
210229

211230
static var urlPadLen = 28

0 commit comments

Comments
 (0)