1 /* SPDX-License-Identifier: GPL-3.0-or-later 2 * Copyright © 2016-2018 The TokTok team. 3 * Copyright © 2015-2016 Tox project. 4 */ 5 6 /* 7 * Tox DHT bootstrap daemon. 8 * Logging utility with support of multiple logging backends. 9 */ 10 #include "log.h" 11 #include "log_backend_stdout.h" 12 #include "log_backend_syslog.h" 13 14 #define INVALID_BACKEND (LOG_BACKEND)-1u 15 static LOG_BACKEND current_backend = INVALID_BACKEND; 16 log_open(LOG_BACKEND backend)17bool log_open(LOG_BACKEND backend) 18 { 19 if (current_backend != INVALID_BACKEND) { 20 return false; 21 } 22 23 current_backend = backend; 24 25 switch (current_backend) { 26 case LOG_BACKEND_STDOUT: 27 // nothing to do here 28 break; 29 30 case LOG_BACKEND_SYSLOG: 31 log_backend_syslog_open(); 32 break; 33 } 34 35 return true; 36 } 37 log_close(void)38bool log_close(void) 39 { 40 if (current_backend == INVALID_BACKEND) { 41 return false; 42 } 43 44 switch (current_backend) { 45 case LOG_BACKEND_STDOUT: 46 // nothing to do here 47 break; 48 49 case LOG_BACKEND_SYSLOG: 50 log_backend_syslog_close(); 51 break; 52 } 53 54 current_backend = INVALID_BACKEND; 55 56 return true; 57 } 58 59 log_write(LOG_LEVEL level,const char * format,...)60bool log_write(LOG_LEVEL level, const char *format, ...) 61 { 62 if (current_backend == INVALID_BACKEND) { 63 return false; 64 } 65 66 va_list args; 67 va_start(args, format); 68 69 switch (current_backend) { 70 case LOG_BACKEND_STDOUT: 71 log_backend_stdout_write(level, format, args); 72 break; 73 74 case LOG_BACKEND_SYSLOG: 75 log_backend_syslog_write(level, format, args); 76 break; 77 } 78 79 va_end(args); 80 81 return true; 82 } 83