|
2 | 2 | #include <stdio.h> |
3 | 3 | #include <stdlib.h> |
4 | 4 | #include <unistd.h> |
| 5 | +#include <sys/uio.h> |
5 | 6 | #include <getopt.h> |
6 | 7 | #include <endian.h> |
| 8 | +#include <string.h> |
| 9 | +#include <stdarg.h> |
7 | 10 |
|
8 | 11 | #include "include/cephfs/libcephfs.h" |
9 | 12 |
|
@@ -1825,10 +1828,54 @@ static int32_t server_start(proxy_manager_t *manager) |
1825 | 1828 | accept_connection, check_stop); |
1826 | 1829 | } |
1827 | 1830 |
|
| 1831 | +static void log_format(struct iovec *iov, char *buffer, size_t size, |
| 1832 | + const char *fmt, const char *err, ...) |
| 1833 | +{ |
| 1834 | + va_list args; |
| 1835 | + int32_t len; |
| 1836 | + |
| 1837 | + va_start(args, err); |
| 1838 | + len = vsnprintf(buffer, size, fmt, args); |
| 1839 | + va_end(args); |
| 1840 | + |
| 1841 | + if (len < 0) { |
| 1842 | + iov->iov_base = (void *)err; |
| 1843 | + iov->iov_len = strlen(err); |
| 1844 | + } else { |
| 1845 | + if (len >= size) { |
| 1846 | + memcpy(buffer + size - 6, "[...]", 6); |
| 1847 | + len = size - 1; |
| 1848 | + } |
| 1849 | + |
| 1850 | + iov->iov_base = buffer; |
| 1851 | + iov->iov_len = len; |
| 1852 | + } |
| 1853 | +} |
| 1854 | + |
1828 | 1855 | static void log_print(proxy_log_handler_t *handler, int32_t level, int32_t err, |
1829 | 1856 | const char *msg) |
1830 | 1857 | { |
1831 | | - printf("[%d] %s\n", level, msg); |
| 1858 | + static const char level_chars[] = "CEWID"; |
| 1859 | + |
| 1860 | + char emsg[256]; |
| 1861 | + char header[8]; |
| 1862 | + struct iovec iov[3]; |
| 1863 | + |
| 1864 | + log_format(&iov[0], header, sizeof(header), "[%c] ", "[?] ", |
| 1865 | + level_chars[level]); |
| 1866 | + |
| 1867 | + iov[1].iov_base = (void *)msg; |
| 1868 | + iov[1].iov_len = strlen(msg); |
| 1869 | + |
| 1870 | + if (err != 0) { |
| 1871 | + log_format(&iov[2], emsg, sizeof(emsg), " (error %d: %s)\n", |
| 1872 | + " (error ?)\n", err, strerror(err)); |
| 1873 | + } else { |
| 1874 | + iov[2].iov_base = "\n"; |
| 1875 | + iov[2].iov_len = 1; |
| 1876 | + } |
| 1877 | + |
| 1878 | + writev(STDOUT_FILENO, iov, 3); |
1832 | 1879 | } |
1833 | 1880 |
|
1834 | 1881 | static struct option main_opts[] = { |
|
0 commit comments