annotate seobeo/LOGGING.md @ 96:70401cf61e97

[Seobeo] Added logging.
author June Park <parkjune1995@gmail.com>
date Fri, 02 Jan 2026 19:16:17 -0800
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
96
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 # Seobeo Logging System
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 ## Overview
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5 All `printf` statements in the seobeo library have been replaced with `Seobeo_Log()` calls for consistent, level-based logging with optional debug mode.
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 ## Log Levels
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9 ```c
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10 typedef enum {
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 SEOBEO_INFO = 0, // General information (server start, mode, etc.)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 SEOBEO_WARNING, // Warnings (SSL not compiled, etc.)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 SEOBEO_ERROR, // Errors (allocation failures, connection errors, etc.)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14 SEOBEO_DEBUG, // Debug messages (only shown in development mode)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 } Seobeo_Log_Level;
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18 ## Usage
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 ```c
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21 Seobeo_Log(SEOBEO_INFO, "Listening on port %s\n", port);
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 Seobeo_Log(SEOBEO_ERROR, "Failed to allocate %zu bytes\n", size);
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 Seobeo_Log(SEOBEO_DEBUG, "Request line (first %zu bytes)\n", len);
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 ## Debug Mode Control
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28 Debug logs are controlled by the `SEOBEO_ENABLE_DEBUG` macro:
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
30 - **Production builds**: Debug logs are disabled (not compiled in)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31 - **Development builds**: Debug logs are enabled via `-DSEOBEO_ENABLE_DEBUG`
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
32
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
33 ## Build Targets
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
34
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
35 ### Seobeo Library
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
36
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
37 #### Production (No Debug Logs)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
38 ```bash
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
39 # macOS
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40 //seobeo:seobeo_server_macos
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 # Linux
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43 //seobeo:seobeo_server_linux
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45 # Platform-agnostic alias
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46 //seobeo:seobeo_server
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49 #### Development (With Debug Logs)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 ```bash
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51 # macOS
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 //seobeo:seobeo_server_macos_dev
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 # Linux
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 //seobeo:seobeo_server_linux_dev
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57 # Platform-agnostic alias
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58 //seobeo:seobeo_server_dev
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 ### MrJuneJune Server
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 #### Production Build
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 ```bash
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 # Build
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66 bazel build //mrjunejune:mrjunejune_server
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68 # Run
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69 bazel run //mrjunejune:mrjunejune_server
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71 # Bundle (for deployment)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72 bazel build //mrjunejune:mrjunejune_server_bundle
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
74
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
75 #### Development Build (With Debug Logs)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76 ```bash
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77 # Build
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78 bazel build //mrjunejune:mrjunejune_server_dev
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 # Run
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81 bazel run //mrjunejune:mrjunejune_server_dev
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 # Bundle
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 bazel build //mrjunejune:mrjunejune_server_dev_bundle
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 ## Log Output Format
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89 All logs are prefixed with their level:
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 [INFO] Listening on port 6969
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93 [INFO] Server mode: EDGE
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94 [ERROR] Failed to allocate 1024 bytes for body
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95 [DEBUG] Request line (first 200 bytes)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96 [DEBUG] sscanf returned 3 (method='GET', path='/', version='HTTP/1.1')
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 ## Changes Summary
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101 ### Files Modified
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
102
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103 1. **seobeo/s_web.c**
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104 - Replaced 26 printf statements with Seobeo_Log
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 - Updated logging to use appropriate levels (INFO, ERROR, DEBUG)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107 2. **seobeo/s_linux_network.c**
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108 - Replaced 10 printf statements with Seobeo_Log
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109 - Added proper error and debug logging for network operations
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 3. **seobeo/s_ssl.c**
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112 - Replaced 5 printf/fprintf statements with Seobeo_Log
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113 - SSL errors now use SEOBEO_ERROR level
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114 - SSL info uses SEOBEO_INFO level
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116 4. **seobeo/BUILD**
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117 - Added `seobeo_server_dev` alias for development builds
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118 - Added `seobeo_server_macos_dev` with `SEOBEO_ENABLE_DEBUG`
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119 - Added `seobeo_server_linux_dev` with `SEOBEO_ENABLE_DEBUG`
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 5. **mrjunejune/BUILD**
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 - Added `mrjunejune_server_dev` binary target
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123 - Added `mrjunejune_server_dev_bundle` for development deployment
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125 ## Benefits
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 1. **Cleaner Production Logs**: Debug messages don't clutter production output
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128 2. **Better Debugging**: Enable verbose logging during development
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
129 3. **Consistent Format**: All logs follow the same `[LEVEL] message` format
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
130 4. **Conditional Compilation**: Debug code is completely removed from production builds (zero runtime overhead)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
131 5. **Easy Toggle**: Switch between dev and prod with different build targets
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
132
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
133 ## Examples
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
134
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
135 ### Running in Development Mode
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
136 ```bash
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
137 $ bazel run //mrjunejune:mrjunejune_server_dev
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
138 [INFO] Listening on port 6969
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
139 [INFO] Server mode: EDGE
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
140 [DEBUG] Request line (first 30 bytes)
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
141 [DEBUG] sscanf returned 3 (method='GET', path='/', version='HTTP/1.1')
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
142 [DEBUG] Allocating method_copy
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
143 [DEBUG] Allocating version_copy
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
144 [DEBUG] Map now has 2 entries
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
145 [DEBUG] File path: /index.html
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
146 Body Size: 1234
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
147 [DEBUG] Request handled successfully
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
148 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
149
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
150 ### Running in Production Mode
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
151 ```bash
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
152 $ bazel run //mrjunejune:mrjunejune_server
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
153 [INFO] Listening on port 6969
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
154 [INFO] Server mode: EDGE
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
155 ```
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
156
70401cf61e97 [Seobeo] Added logging.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
157 Notice that debug messages are completely absent in production mode!