@@ -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