Skip to content

Commit f695ae1

Browse files
Logging: add user-adjustable log levels ("err", "warn", "info")
The log_printf() function now takes an enum log_level parameter, and prints the message to the console if the supplied level is lower than or equal than the configured kernel log level (which can be set via the "log_level" manifest option). The default log level is "err". The msg_{err,warn,info} macros have been repurposed so that in kernel code they expand to log_printf() function calls; calls to these macros have been modified so that the format string starts with a sensible prefix; the trailing newline is added by log_printf(), thus it has been removed from the macro invocations. Some rprintf() and thread_log() calls have been converted to use the msg_{print,err,warn,info} macros.
1 parent 9caf262 commit f695ae1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+809
-778
lines changed

klib/aws.c

+13-13
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ closure_function(5, 1, boolean, aws_metadata_in,
4242
heap h = bound(h);
4343
value_handler vh = closure(h, aws_metadata_recv, handler, &bound(done));
4444
if (vh == INVALID_ADDRESS) {
45-
msg_err("failed to allocate value handler\n");
45+
msg_err("%s: failed to allocate value handler", func_ss);
4646
goto error;
4747
}
4848
bound(parser) = allocate_http_parser(h, vh);
4949
if (bound(parser) == INVALID_ADDRESS) {
50-
msg_err("failed to allocate HTTP parser\n");
50+
msg_err("%s: failed to allocate HTTP parser", func_ss);
5151
deallocate_closure(vh);
5252
goto error;
5353
}
@@ -61,7 +61,7 @@ closure_function(5, 1, boolean, aws_metadata_in,
6161
return false;
6262
}
6363
} else {
64-
msg_err("failed to parse HTTP response: %v\n", s);
64+
msg_err("%s: failed to parse HTTP response: %v", func_ss, s);
6565
timm_dealloc(s);
6666
}
6767
} else { /* connection closed */
@@ -84,19 +84,19 @@ closure_function(3, 1, input_buffer_handler, aws_metadata_ch,
8484
heap h = bound(h);
8585
buffer_handler handler = bound(handler);
8686
if (!out) {
87-
msg_err("failed to connect to server\n");
87+
msg_err("%s: failed to connect to server", func_ss);
8888
goto error;
8989
}
9090
tuple req = allocate_tuple();
9191
if (req == INVALID_ADDRESS) {
92-
msg_err("failed to allocate request\n");
92+
msg_err("%s: failed to allocate request", func_ss);
9393
goto error;
9494
}
9595
set(req, sym(url), alloca_wrap_sstring(bound(uri)));
9696
status s = http_request(h, out, HTTP_REQUEST_METHOD_GET, req, 0);
9797
deallocate_value(req);
9898
if (!is_ok(s)) {
99-
msg_err("failed to send HTTP request: %v\n", s);
99+
msg_err("%s: failed to send HTTP request: %v", func_ss, s);
100100
timm_dealloc(s);
101101
goto error;
102102
}
@@ -127,10 +127,10 @@ void aws_metadata_get(heap h, sstring uri, buffer_handler handler)
127127
status s = direct_connect(h, &md_server, 80, ch);
128128
if (is_ok(s))
129129
return;
130-
msg_err("failed to connect to server: %v\n", s);
130+
msg_err("%s: failed to connect to server: %v", func_ss, s);
131131
timm_dealloc(s);
132132
} else {
133-
msg_err("failed to allocate closure\n");
133+
msg_err("%s: failed to allocate closure", func_ss);
134134
}
135135
apply(handler, 0);
136136
}
@@ -157,7 +157,7 @@ static boolean aws_cred_parse_item(buffer data, sstring name, buffer value)
157157
data->start = 0; /* rewind buffer start, so that it can be re-used to parse other items */
158158
return true;
159159
error:
160-
msg_err("parsing of %s failed (%b)\n", name, data);
160+
msg_err("%s: parsing of %s failed (%b)", func_ss, name, data);
161161
return false;
162162
}
163163

@@ -190,13 +190,13 @@ closure_function(2, 1, status, aws_iam_role_get,
190190
aws_cred_handler handler = bound(handler);
191191
closure_finish();
192192
if (!data || (buffer_length(data) == 0)) {
193-
msg_err("no IAM role associated to instance\n");
193+
msg_err("%s: no role associated to instance", func_ss);
194194
goto error;
195195
}
196196
buffer uri = wrap_string_cstring(AWS_CRED_URI);
197197
push_u8(uri, '/');
198198
if (!push_buffer(uri, data)) {
199-
msg_err("failed to build URI\n");
199+
msg_err("%s: failed to build URI", func_ss);
200200
deallocate_buffer(uri);
201201
goto error;
202202
}
@@ -205,7 +205,7 @@ closure_function(2, 1, status, aws_iam_role_get,
205205
aws_metadata_get(h, buffer_to_sstring(uri), cred_parser);
206206
return STATUS_OK;
207207
} else {
208-
msg_err("failed to allocate closure\n");
208+
msg_err("%s: failed to allocate closure", func_ss);
209209
deallocate_buffer(uri);
210210
}
211211
error:
@@ -219,7 +219,7 @@ void aws_cred_get(heap h, aws_cred_handler handler)
219219
if (role_handler != INVALID_ADDRESS) {
220220
aws_metadata_get(h, ss(AWS_CRED_URI), role_handler);
221221
} else {
222-
msg_err("failed to allocate closure\n");
222+
msg_err("%s: failed to allocate closure", func_ss);
223223
apply(handler, 0);
224224
}
225225
}

klib/azure.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ closure_function(1, 1, void, azure_instance_md_parsed,
5353
closure_func_basic(parse_error, void, azure_instance_md_err,
5454
string data)
5555
{
56-
msg_err("failed to parse JSON: %b\n", data);
56+
msg_err("%s: failed to parse JSON: %b", func_ss, data);
5757
}
5858

5959
closure_func_basic(value_handler, void, azure_instance_md_vh,
@@ -62,7 +62,7 @@ closure_func_basic(value_handler, void, azure_instance_md_vh,
6262
az_instance_md_req req_data = struct_from_closure(az_instance_md_req, vh);
6363
deallocate_value(req_data->req);
6464
if (!v) {
65-
msg_err("failed to retrieve instance metadata\n");
65+
msg_err("%s: failed to retrieve metadata", func_ss);
6666
goto done;
6767
}
6868
value start_line = get(v, sym(start_line));
@@ -74,7 +74,7 @@ closure_func_basic(value_handler, void, azure_instance_md_vh,
7474
else
7575
content = 0;
7676
if (!content) {
77-
msg_err("unexpected metadata server response %v\n", v);
77+
msg_err("%s: unexpected server response %v", func_ss, v);
7878
goto done;
7979
}
8080
tuple md = 0;
@@ -106,12 +106,12 @@ void azure_instance_md_get(az_instance_md_handler complete)
106106
req_params.method = HTTP_REQUEST_METHOD_GET;
107107
az_instance_md_req req_data = allocate(azure.h, sizeof(*req_data));
108108
if (req_data == INVALID_ADDRESS) {
109-
msg_err("out of memory\n");
109+
msg_err("%s: out of memory", func_ss);
110110
goto error;
111111
}
112112
tuple req = allocate_tuple();
113113
if (req == INVALID_ADDRESS) {
114-
msg_err("out of memory\n");
114+
msg_err("%s: out of memory", func_ss);
115115
deallocate(azure.h, req_data, sizeof(*req_data));
116116
goto error;
117117
}

klib/azure_diagnostics.c

+14-14
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ static boolean azure_metric_get_interval(tuple metrics, sstring name, const u64
7575
u64 interval;
7676
if (get_u64(metrics, sym_sstring(name), &interval)) {
7777
if (interval < min_value) {
78-
rprintf("Azure diagnostics: invalid metrics %s (minimum allowed value %ld seconds)\n",
78+
msg_err("Azure diagnostics: invalid metrics %s (minimum allowed value %ld seconds)",
7979
name, min_value);
8080
return false;
8181
}
@@ -158,11 +158,11 @@ static void azdiag_resolve_cb(sstring name, const ip_addr_t *addr, void *cb_arg)
158158
if (addr) {
159159
azdiag_debug("connecting to server (%F)", ch);
160160
if (tls_connect((ip_addr_t *)addr, 443, ch) < 0) {
161-
msg_err("failed to connect to server %s\n", name);
161+
msg_err("%s: failed to connect to server %s", func_ss, name);
162162
apply(ch, 0);
163163
}
164164
} else {
165-
msg_err("failed to resolve server name %s\n", name);
165+
msg_err("%s: failed to resolve server name %s", func_ss, name);
166166
apply(ch, 0);
167167
}
168168
}
@@ -193,7 +193,7 @@ static boolean azure_metrics_table_post(az_diag diag, sstring resource, buffer c
193193
status s = http_request(diag->h, diag->metrics.out, HTTP_REQUEST_METHOD_POST, req, body);
194194
boolean success = is_ok(s);
195195
if (!success) {
196-
msg_err("%v\n", s);
196+
msg_err("%s error %v", func_ss, s);
197197
timm_dealloc(s);
198198
}
199199
deallocate_value(req);
@@ -253,7 +253,7 @@ closure_func_basic(status_handler, void, azdiag_setup_complete,
253253
* instance startup (a few seconds might elapse before the network interface acquires a DHCP
254254
* address). */
255255
if (setup->retry_backoff > seconds(2))
256-
msg_err("%v\n", s);
256+
msg_err("%s error %v", func_ss, s);
257257
else
258258
azdiag_debug("setup error %v, retrying", s);
259259

@@ -268,7 +268,7 @@ closure_func_basic(status_handler, void, azdiag_setup_complete,
268268
false, 0, setup_retry);
269269
return;
270270
} else {
271-
msg_err("out of memory\n");
271+
msg_err("%s: out of memory", func_ss);
272272
}
273273
}
274274
deallocate(h, setup, sizeof(*setup));
@@ -357,12 +357,12 @@ static boolean azure_metrics_post(az_diag diag)
357357
{
358358
timestamp ts = diag->metrics.ts;
359359
if ((ts >= diag->metrics.table_switch) && !azure_metrics_table_switch(diag)) {
360-
msg_err("failed to create table\n");
360+
msg_err("%s: failed to create table", func_ss);
361361
return false;
362362
}
363363
buffer b = allocate_buffer(diag->h, 1024);
364364
if (b == INVALID_ADDRESS) {
365-
msg_err("out of memory\n");
365+
msg_err("%s: out of memory", func_ss);
366366
return false;
367367
}
368368
u64 secs = sec_from_timestamp(ts);
@@ -419,7 +419,7 @@ closure_func_basic(input_buffer_handler, boolean, azure_metrics_in_handler,
419419
if (!diag->metrics.out)
420420
return true;
421421
} else {
422-
msg_err("failed to parse response: %v\n", s);
422+
msg_err("%s: failed to parse response: %v", func_ss, s);
423423
timm_dealloc(s);
424424
apply(diag->metrics.out, 0);
425425
return true;
@@ -449,13 +449,13 @@ closure_func_basic(value_handler, void, azure_metrics_value_handler,
449449
}
450450
if (i == _countof(expected_codes)) {
451451
if (status_code == 403)
452-
rprintf("Azure: invalid storage account SAS token\n");
452+
msg_err("Azure: invalid storage account SAS token");
453453
else
454454
status_code = 0;
455455
}
456456
}
457457
if (!status_code)
458-
msg_err("unexpected response %v\n", v);
458+
msg_err("%s: unexpected response %v", func_ss, v);
459459
apply(diag->metrics.out, 0);
460460
diag->metrics.out = 0; /* signal to input buffer handler that connection is closed */
461461
}
@@ -474,8 +474,8 @@ int azure_diag_init(tuple cfg)
474474
tuple metrics = get_tuple(cfg, sym_this("metrics"));
475475
if (metrics) {
476476
if (!diag->storage_account || !diag->storage_account_sas) {
477-
rprintf("Azure diagnostics: missing storage account or SAS token, "
478-
"required for metrics\n");
477+
msg_err("Azure diagnostics: missing storage account or SAS token, "
478+
"required for metrics");
479479
return KLIB_INIT_FAILED;
480480
}
481481
if (!azure_metric_get_interval(metrics, ss("sample_interval"), 15, 15,
@@ -524,7 +524,7 @@ int azure_diag_init(tuple cfg)
524524
extension->name = ss("Microsoft.Azure.Diagnostics.LinuxDiagnostic");
525525
extension->version = ss("3.0.142");
526526
if (!azure_register_ext(extension)) {
527-
rprintf("Azure diagnostics: failed to register extension\n");
527+
msg_err("Azure diagnostics: failed to register extension");
528528
return KLIB_INIT_FAILED;
529529
}
530530
azdiag_setup_s setup = allocate(h, sizeof(*setup));

klib/cloud_azure.c

+12-12
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ closure_func_basic(timer_handler, void, az_report_th,
7575
if (is_ok(s)) {
7676
az->goalstate_pending = true;
7777
} else {
78-
msg_err("%v\n", s);
78+
msg_err("%s error %v", func_ss, s);
7979
timm_dealloc(s);
8080
}
8181
}
@@ -85,7 +85,7 @@ static void az_report_status(azure az)
8585
heap h = az->h;
8686
buffer blob = allocate_buffer(h, KB);
8787
if (blob == INVALID_ADDRESS) {
88-
msg_err("out of memory\n");
88+
msg_err("%s: out of memory", func_ss);
8989
return;
9090
}
9191
status s;
@@ -169,7 +169,7 @@ static void az_report_status(azure az)
169169
s = net_http_req(req_params);
170170
done:
171171
if (!is_ok(s)) {
172-
msg_err("%v\n", s);
172+
msg_err("%s error %v", func_ss, s);
173173
timm_dealloc(s);
174174
deallocate_buffer(blob);
175175
}
@@ -184,7 +184,7 @@ closure_func_basic(value_handler, void, az_get_ext_vh,
184184
deallocate_value(req_data->req);
185185
deallocate(az->h, req_data, sizeof(*req_data));
186186
if (!v) {
187-
msg_err("failed to get response\n");
187+
msg_err("%s: failed to get response", func_ss);
188188
return;
189189
}
190190
buffer content = get(v, sym(content));
@@ -277,10 +277,10 @@ closure_func_basic(value_handler, void, az_get_ext_vh,
277277
return;
278278
}
279279
parse_error:
280-
msg_err("failed to parse response\n");
280+
msg_err("%s: failed to parse response", func_ss);
281281
return;
282282
alloc_error:
283-
msg_err("out of memory\n");
283+
msg_err("%s: out of memory", func_ss);
284284
}
285285

286286
static void az_get_ext_config(azure az)
@@ -330,7 +330,7 @@ static void az_get_ext_config(azure az)
330330
if (req_data != INVALID_ADDRESS)
331331
deallocate(h, req_data, sizeof(*req_data));
332332
if (!is_ok(s)) {
333-
msg_err("%v\n", s);
333+
msg_err("%s error %v", func_ss, s);
334334
timm_dealloc(s);
335335
}
336336
}
@@ -340,7 +340,7 @@ closure_func_basic(value_handler, void, az_status_upload_vh,
340340
{
341341
azure az = struct_from_closure(azure, status_upload.vh);
342342
if (!v) {
343-
msg_err("failed to get response\n");
343+
msg_err("%s: failed to get response", func_ss);
344344
return;
345345
}
346346
value start_line = get(v, sym(start_line));
@@ -355,12 +355,12 @@ closure_func_basic(value_handler, void, az_status_upload_vh,
355355
if (is_ok(s)) {
356356
az->status_upload.last_update = kern_now(CLOCK_ID_REALTIME);
357357
} else {
358-
msg_err("failed to upload blob page: %v\n", s);
358+
msg_err("%s: failed to upload blob page: %v", func_ss, s);
359359
timm_dealloc(s);
360360
deallocate_buffer(req_params->body);
361361
}
362362
} else {
363-
msg_err("unexpected response %v\n", v);
363+
msg_err("%s: unexpected response %v", func_ss, v);
364364
}
365365
}
366366

@@ -370,7 +370,7 @@ closure_func_basic(value_handler, void, az_goalstate_vh,
370370
azure az = struct_from_closure(azure, goalstate_vh);
371371
az->goalstate_pending = false;
372372
if (!v) {
373-
msg_err("failed to get response\n");
373+
msg_err("%s: failed to get response", func_ss);
374374
return;
375375
}
376376
buffer content = get(v, sym(content));
@@ -415,7 +415,7 @@ closure_func_basic(value_handler, void, az_goalstate_vh,
415415
return;
416416
}
417417
exit:
418-
msg_err("failed to parse response %v\n", v);
418+
msg_err("%s: failed to parse response %v", func_ss, v);
419419
}
420420

421421
closure_func_basic(value_handler, void, az_ready_vh,

0 commit comments

Comments
 (0)