- commit
- a5dd2ed
- parent
- 8c509c5
- author
- Eric Bower
- date
- 2025-01-29 06:58:43 -0500 EST
chore(prose): better log stmts
2 files changed,
+56,
-32
+5,
-3
1@@ -694,21 +694,23 @@ func metricDrainSub(ctx context.Context, dbpool db.DB, logger *slog.Logger, secr
2 line := scanner.Text()
3 clean := strings.TrimSpace(line)
4
5+ fmt.Println(line)
6+
7 visit, err := accessLogToVisit(dbpool, clean)
8 if err != nil {
9- // logger.Debug("could not convert access log to a visit", "err", err)
10+ logger.Info("could not convert access log to a visit", "err", err)
11 continue
12 }
13
14 logger.Info("received visit", "visit", visit)
15 err = shared.AnalyticsVisitFromVisit(visit, dbpool, secret)
16 if err != nil {
17- // logger.Debug("could not record analytics visit", "err", err)
18+ logger.Info("could not record analytics visit", "err", err)
19 continue
20 }
21
22 if !strings.HasPrefix(visit.ContentType, "text/html") {
23- // logger.Debug("invalid content type", "contentType", visit.ContentType)
24+ logger.Info("invalid content type", "contentType", visit.ContentType)
25 continue
26 }
27
+51,
-29
1@@ -130,9 +130,11 @@ func blogStyleHandler(w http.ResponseWriter, r *http.Request) {
2 http.Error(w, "blog not found", http.StatusNotFound)
3 return
4 }
5+ logger = shared.LoggerWithUser(logger, user)
6+
7 styles, err := dbpool.FindPostWithFilename("_styles.css", user.ID, cfg.Space)
8 if err != nil {
9- logger.Info("css not found", "user", username)
10+ logger.Info("css not found")
11 http.Error(w, "css not found", http.StatusNotFound)
12 return
13 }
14@@ -141,7 +143,7 @@ func blogStyleHandler(w http.ResponseWriter, r *http.Request) {
15
16 _, err = w.Write([]byte(styles.Text))
17 if err != nil {
18- logger.Error(err.Error())
19+ logger.Error("write to response writer", "err", err.Error())
20 http.Error(w, "server error", 500)
21 }
22 }
23@@ -158,6 +160,7 @@ func blogHandler(w http.ResponseWriter, r *http.Request) {
24 http.Error(w, "blog not found", http.StatusNotFound)
25 return
26 }
27+ logger = shared.LoggerWithUser(logger, user)
28
29 tag := r.URL.Query().Get("tag")
30 pager := &db.Pager{Num: 250, Page: 0}
31@@ -171,7 +174,7 @@ func blogHandler(w http.ResponseWriter, r *http.Request) {
32 posts = p.Data
33
34 if err != nil {
35- logger.Error(err.Error())
36+ logger.Error("find posts", "err", err.Error())
37 http.Error(w, "could not fetch posts for blog", http.StatusInternalServerError)
38 return
39 }
40@@ -185,7 +188,7 @@ func blogHandler(w http.ResponseWriter, r *http.Request) {
41 curl := shared.CreateURLFromRequest(cfg, r)
42
43 if err != nil {
44- logger.Error(err.Error())
45+ logger.Error("render template", "err", err.Error())
46 http.Error(w, err.Error(), http.StatusInternalServerError)
47 return
48 }
49@@ -203,7 +206,7 @@ func blogHandler(w http.ResponseWriter, r *http.Request) {
50 if err == nil {
51 parsedText, err := shared.ParseText(readme.Text)
52 if err != nil {
53- logger.Error(err.Error())
54+ logger.Error("readme", "err", err.Error())
55 }
56 headerTxt.Bio = parsedText.Description
57 headerTxt.Layout = parsedText.Layout
58@@ -275,7 +278,7 @@ func blogHandler(w http.ResponseWriter, r *http.Request) {
59
60 err = ts.Execute(w, data)
61 if err != nil {
62- logger.Error(err.Error())
63+ logger.Error("template execute", "err", err.Error())
64 http.Error(w, err.Error(), http.StatusInternalServerError)
65 }
66 }
67@@ -295,6 +298,7 @@ func postRawHandler(w http.ResponseWriter, r *http.Request) {
68
69 dbpool := shared.GetDB(r)
70 logger := shared.GetLogger(r)
71+ logger = logger.With("slug", slug)
72
73 user, err := dbpool.FindUserForName(username)
74 if err != nil {
75@@ -302,6 +306,7 @@ func postRawHandler(w http.ResponseWriter, r *http.Request) {
76 http.Error(w, "blog not found", http.StatusNotFound)
77 return
78 }
79+ logger = shared.LoggerWithUser(logger, user)
80
81 post, err := dbpool.FindPostWithSlug(slug, user.ID, cfg.Space)
82 if err != nil {
83@@ -314,7 +319,7 @@ func postRawHandler(w http.ResponseWriter, r *http.Request) {
84
85 _, err = w.Write([]byte(post.Text))
86 if err != nil {
87- logger.Error(err.Error())
88+ logger.Error("write to response writer", "err", err.Error())
89 http.Error(w, "server error", 500)
90 }
91 }
92@@ -342,6 +347,9 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
93 return
94 }
95
96+ logger = shared.LoggerWithUser(logger, user)
97+ logger = logger.With("slug", slug)
98+
99 blogName := GetBlogName(username)
100 curl := shared.CreateURLFromRequest(cfg, r)
101
102@@ -364,7 +372,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
103 if err == nil {
104 footerParsed, err := shared.ParseText(footer.Text)
105 if err != nil {
106- logger.Error(err.Error())
107+ logger.Error("footer", "err", err.Error())
108 }
109 footerHTML = template.HTML(footerParsed.Html)
110 }
111@@ -374,7 +382,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
112 if err == nil {
113 readmeParsed, err := shared.ParseText(readme.Text)
114 if err != nil {
115- logger.Error(err.Error())
116+ logger.Error("readme", "err", err.Error())
117 }
118 if readmeParsed.MetaData.Title != "" {
119 blogName = readmeParsed.MetaData.Title
120@@ -388,9 +396,10 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
121 diff := ""
122 post, err := dbpool.FindPostWithSlug(slug, user.ID, cfg.Space)
123 if err == nil {
124+ logger.Info("post found", "id", post.ID, "filename", post.FileSize)
125 parsedText, err := shared.ParseText(post.Text)
126 if err != nil {
127- logger.Error(err.Error())
128+ logger.Error("find post with slug", "err", err.Error())
129 }
130
131 if parsedText.Image != "" {
132@@ -431,6 +440,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
133 WithStyles: withStyles,
134 }
135 } else {
136+ logger.Info("post not found")
137 notFound, err := dbpool.FindPostWithFilename("_404.md", user.ID, cfg.Space)
138 contents := template.HTML("Oops! we can't seem to find this post.")
139 title := "Post not found"
140@@ -438,7 +448,7 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
141 if err == nil {
142 notFoundParsed, err := shared.ParseText(notFound.Text)
143 if err != nil {
144- logger.Error(err.Error())
145+ logger.Error("parse not found file", "err", err.Error())
146 }
147 if notFoundParsed.MetaData.Title != "" {
148 title = notFoundParsed.MetaData.Title
149@@ -471,7 +481,6 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
150 Contents: contents,
151 Unlisted: true,
152 }
153- logger.Info("post not found", "user", username, "slug", slug)
154 w.WriteHeader(http.StatusNotFound)
155 }
156
157@@ -480,12 +489,14 @@ func postHandler(w http.ResponseWriter, r *http.Request) {
158 })
159
160 if err != nil {
161+ logger.Error("render template", "err", err)
162 http.Error(w, err.Error(), http.StatusInternalServerError)
163 }
164
165+ logger.Info("executing template", "title", data.Title, "url", data.URL, "hasCSS", data.HasCSS)
166 err = ts.Execute(w, data)
167 if err != nil {
168- logger.Error(err.Error())
169+ logger.Error("template", "err", err.Error())
170 http.Error(w, err.Error(), http.StatusInternalServerError)
171 }
172 }
173@@ -506,7 +517,7 @@ func readHandler(w http.ResponseWriter, r *http.Request) {
174 }
175
176 if err != nil {
177- logger.Error(err.Error())
178+ logger.Error("finding posts", "err", err.Error())
179 http.Error(w, err.Error(), http.StatusInternalServerError)
180 return
181 }
182@@ -537,7 +548,7 @@ func readHandler(w http.ResponseWriter, r *http.Request) {
183
184 tags, err := dbpool.FindPopularTags(cfg.Space)
185 if err != nil {
186- logger.Error(err.Error())
187+ logger.Error("find popular tags", "err", err.Error())
188 }
189
190 data := ReadPageData{
191@@ -566,7 +577,7 @@ func readHandler(w http.ResponseWriter, r *http.Request) {
192
193 err = ts.Execute(w, data)
194 if err != nil {
195- logger.Error(err.Error())
196+ logger.Error("template execute", "err", err.Error())
197 http.Error(w, err.Error(), http.StatusInternalServerError)
198 }
199 }
200@@ -583,6 +594,8 @@ func rssBlogHandler(w http.ResponseWriter, r *http.Request) {
201 http.Error(w, "rss feed not found", http.StatusNotFound)
202 return
203 }
204+ logger = shared.LoggerWithUser(logger, user)
205+ logger.Info("fetching blog rss")
206
207 tag := r.URL.Query().Get("tag")
208 pager := &db.Pager{Num: 10, Page: 0}
209@@ -596,14 +609,14 @@ func rssBlogHandler(w http.ResponseWriter, r *http.Request) {
210 posts = p.Data
211
212 if err != nil {
213- logger.Error(err.Error())
214+ logger.Error("find posts", "err", err.Error())
215 http.Error(w, err.Error(), http.StatusInternalServerError)
216 return
217 }
218
219 ts, err := template.ParseFiles(cfg.StaticPath("html/rss.page.tmpl"))
220 if err != nil {
221- logger.Error(err.Error())
222+ logger.Error("template parse file", "err", err.Error())
223 http.Error(w, err.Error(), http.StatusInternalServerError)
224 return
225 }
226@@ -616,7 +629,7 @@ func rssBlogHandler(w http.ResponseWriter, r *http.Request) {
227 if err == nil {
228 parsedText, err := shared.ParseText(readme.Text)
229 if err != nil {
230- logger.Error(err.Error())
231+ logger.Error("readme", "err", err.Error())
232 }
233 if parsedText.Title != "" {
234 headerTxt.Title = parsedText.Title
235@@ -646,7 +659,7 @@ func rssBlogHandler(w http.ResponseWriter, r *http.Request) {
236 }
237 parsed, err := shared.ParseText(post.Text)
238 if err != nil {
239- logger.Error(err.Error())
240+ logger.Error("parse post text", "err", err.Error())
241 }
242
243 footer, err := dbpool.FindPostWithFilename("_footer.md", user.ID, cfg.Space)
244@@ -654,7 +667,7 @@ func rssBlogHandler(w http.ResponseWriter, r *http.Request) {
245 if err == nil {
246 footerParsed, err := shared.ParseText(footer.Text)
247 if err != nil {
248- logger.Error(err.Error())
249+ logger.Error("parse footer text", "err", err.Error())
250 }
251 footerHTML = footerParsed.Html
252 }
253@@ -690,14 +703,14 @@ func rssBlogHandler(w http.ResponseWriter, r *http.Request) {
254
255 rss, err := feed.ToAtom()
256 if err != nil {
257- logger.Error(err.Error())
258+ logger.Error("feed to atom", "err", err.Error())
259 http.Error(w, "Could not generate atom rss feed", http.StatusInternalServerError)
260 }
261
262 w.Header().Add("Content-Type", "application/atom+xml; charset=utf-8")
263 _, err = w.Write([]byte(rss))
264 if err != nil {
265- logger.Error(err.Error())
266+ logger.Error("writing to response handler", "err", err.Error())
267 }
268 }
269
270@@ -708,14 +721,14 @@ func rssHandler(w http.ResponseWriter, r *http.Request) {
271
272 pager, err := dbpool.FindAllPosts(&db.Pager{Num: 25, Page: 0}, cfg.Space)
273 if err != nil {
274- logger.Error(err.Error())
275+ logger.Error("find all posts", "err", err.Error())
276 http.Error(w, err.Error(), http.StatusInternalServerError)
277 return
278 }
279
280 ts, err := template.ParseFiles(cfg.StaticPath("html/rss.page.tmpl"))
281 if err != nil {
282- logger.Error(err.Error())
283+ logger.Error("template parse file", "err", err.Error())
284 http.Error(w, err.Error(), http.StatusInternalServerError)
285 return
286 }
287@@ -771,14 +784,14 @@ func rssHandler(w http.ResponseWriter, r *http.Request) {
288
289 rss, err := feed.ToAtom()
290 if err != nil {
291- logger.Error(err.Error())
292+ logger.Error("feed to atom", "err", err.Error())
293 http.Error(w, "Could not generate atom rss feed", http.StatusInternalServerError)
294 }
295
296 w.Header().Add("Content-Type", "application/atom+xml; charset=utf-8")
297 _, err = w.Write([]byte(rss))
298 if err != nil {
299- logger.Error(err.Error())
300+ logger.Error("write to response writer", "err", err.Error())
301 }
302 }
303
304@@ -789,14 +802,14 @@ func serveFile(file string, contentType string) http.HandlerFunc {
305
306 contents, err := os.ReadFile(cfg.StaticPath(fmt.Sprintf("public/%s", file)))
307 if err != nil {
308- logger.Error(err.Error())
309+ logger.Error("read file", "err", err.Error())
310 http.Error(w, "file not found", 404)
311 }
312 w.Header().Add("Content-Type", contentType)
313
314 _, err = w.Write(contents)
315 if err != nil {
316- logger.Error(err.Error())
317+ logger.Error("write to response writer", "err", err.Error())
318 http.Error(w, "server error", 500)
319 }
320 }
321@@ -835,7 +848,16 @@ func createMainRoutes(staticRoutes []shared.Route) []shared.Route {
322
323 func imgRequest(w http.ResponseWriter, r *http.Request) {
324 logger := shared.GetLogger(r)
325+ dbpool := shared.GetDB(r)
326 username := shared.GetUsernameFromRequest(r)
327+ user, err := dbpool.FindUserForName(username)
328+ if err != nil {
329+ logger.Error("could not find user", "username", username)
330+ http.Error(w, "could find user", http.StatusNotFound)
331+ return
332+ }
333+ logger = shared.LoggerWithUser(logger, user)
334+
335 destUrl, err := url.Parse(fmt.Sprintf("https://%s-prose.pgs.sh%s", username, r.URL.Path))
336 if err != nil {
337 logger.Error("could not parse image proxy url", "username", username)