@@ -137,8 +137,15 @@ func (l *Logger) Output(calldepth int, message string) {
137137 File: file,
138138 Message: message,
139139 })
140+ // Fallback for template errors
140141 if err != nil {
141− panic(err)
142+ _, ferr := fmt.Fprintf(l.writer, "[%s] [%s] %s",
143+ FormatTimestamp(now),
144+ file,
145+ message)
146+ if ferr != nil {
147+ panic(ferr)
148+ }
142149 }
143150
144151 _, err = l.writer.Write([]byte("\n"))
@@ -177,8 +184,17 @@ func (l *Logger) PrintAuthf(username string, req *http.Request, status AuthStatu
177184 Status: string(status),
178185 Message: fmt.Sprintf(format, a...),
179186 })
187+ // Fallback for template errors
180188 if err != nil {
181− panic(err)
189+ _, ferr := fmt.Fprintf(l.writer, "%s - %s [%s] [%s] %s",
190+ client,
191+ username,
192+ FormatTimestamp(now),
193+ string(status),
194+ fmt.Sprintf(format, a...))
195+ if ferr != nil {
196+ panic(ferr)
197+ }
182198 }
183199
184200 _, err = l.writer.Write([]byte("\n"))
@@ -234,8 +250,14 @@ func (l *Logger) PrintReq(username, upstream string, req *http.Request, url url.
234250 UserAgent: fmt.Sprintf("%q", req.UserAgent()),
235251 Username: username,
236252 })
253+ // Fallback for template errors
237254 if err != nil {
238− panic(err)
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)
258+ if ferr != nil {
259+ panic(ferr)
260+ }
239261 }
240262
241263 _, err = l.writer.Write([]byte("\n"))