in src/logging.c [161:200]
void aws_crt_log_to_callback(aws_crt_log_callback *callback, void *user_data) {
if (callback == NULL) {
aws_crt_log_stop();
return;
}
crt_logger_impl.channel = aws_mem_calloc(aws_default_allocator(), 1, sizeof(struct aws_logger_pipeline));
if (crt_logger_impl.channel == NULL) {
goto cleanup;
}
crt_logger_impl.formatter = aws_mem_acquire(aws_default_allocator(), sizeof(struct aws_log_formatter));
if (crt_logger_impl.formatter == NULL) {
goto cleanup;
}
struct aws_log_formatter_standard_options formatter_options = {.date_format = AWS_DATE_FORMAT_ISO_8601};
if (aws_log_formatter_init_default(crt_logger_impl.formatter, aws_default_allocator(), &formatter_options)) {
goto cleanup;
}
*(void **)(&crt_logger_impl.log_write) = callback;
crt_logger_impl.user_data = user_data;
crt_logger_impl.writer.vtable = &crt_log_writer_vtable;
crt_logger_impl.writer.allocator = aws_default_allocator();
crt_logger_impl.writer.impl = &crt_logger_impl;
if (aws_log_channel_init_foreground(crt_logger_impl.channel, aws_default_allocator(), &crt_logger_impl.writer)) {
goto cleanup;
}
crt_logger.allocator = aws_default_allocator();
crt_logger.vtable = &crt_logger_vtable;
crt_logger.p_impl = &crt_logger_impl;
aws_logger_set(&crt_logger);
return;
cleanup:
crt_logger_impl_clean_up(&crt_logger_impl);
}