@@ -137,8 +137,15 @@ func (l *Logger) Output(calldepth int, message string) {
137 File: file,
137 File: file,
138 Message: message,
138 Message: message,
140+ // Fallback for template errors
140 if err != nil {
141 if err != nil {
142+ _, ferr := fmt.Fprintf(l.writer, "[%s] [%s] %s",
143+ FormatTimestamp(now),
141− panic(err)
147+ panic(ferr)
144 _, err = l.writer.Write([]byte("\n"))
151 _, err = l.writer.Write([]byte("\n"))
@@ -177,8 +184,17 @@ func (l *Logger) PrintAuthf(username string, req *http.Request, status AuthStatu
177 Status: string(status),
184 Status: string(status),
178 Message: fmt.Sprintf(format, a...),
185 Message: fmt.Sprintf(format, a...),
187+ // Fallback for template errors
180 if err != nil {
188 if err != nil {
189+ _, ferr := fmt.Fprintf(l.writer, "%s - %s [%s] [%s] %s",
192+ FormatTimestamp(now),
194+ fmt.Sprintf(format, a...))
181− panic(err)
196+ panic(ferr)
184 _, err = l.writer.Write([]byte("\n"))
200 _, err = l.writer.Write([]byte("\n"))
@@ -234,8 +250,14 @@ func (l *Logger) PrintReq(username, upstream string, req *http.Request, url url.
234 UserAgent: fmt.Sprintf("%q", req.UserAgent()),
250 UserAgent: fmt.Sprintf("%q", req.UserAgent()),
235 Username: username,
251 Username: username,
253+ // Fallback for template errors
237 if err != nil {
254 if err != nil {
255+ _, ferr := fmt.Fprintf(l.writer, "%s - %s [%s] %s %s %s %q %s %q %d %d %0.3f",
256+ client, username, FormatTimestamp(ts), req.Host, req.Method, upstream,
257+ url.RequestURI(), req.Proto, req.UserAgent(), status, size, duration)
238− panic(err)
259+ panic(ferr)
241 _, err = l.writer.Write([]byte("\n"))
263 _, err = l.writer.Write([]byte("\n"))