diff --git a/examples/filelistc.c b/examples/filelistc.c index 2ec55d6..3793e39 100644 --- a/examples/filelistc.c +++ b/examples/filelistc.c @@ -104,6 +104,42 @@ static int __rpcscheck_onclient(sxlink_t *l, int ch_tid, char *description) return SXE_SUCCESS; } +/* + * This function might be used to output log in any format you like. + * In this case it is a prefix with a message type before a message body. + */ +static int __log(const sxlogtype_t type, const char *fmt, ...) +{ + int r = 0; + + switch(type) { + case SXCRITICAL_LOG: + r += fprintf(stderr, "[CRITICAL] "); + break; + case SXERROR_LOG: + r += fprintf(stderr, "[ERROR] "); + break; + case SXWARNING_LOG: + r += fprintf(stderr, "[WARNING] "); + break; + case SXINFO_LOG: + r += fprintf(stderr, "[INFO] "); + break; + case SXDEBUG_LOG: + r += fprintf(stderr, "[DEBUG] "); + break; + default: + r += fprintf(stderr, "[UNKNOWN] "); + break; + } + + va_list arglist; + va_start(arglist, fmt); + r += vfprintf(stderr, fmt, arglist); + va_end(arglist); + return r; +} + /* supplemetary functions to make code more readable */ static int __close_dir_stream(sxchnl_t *c, int sid) { @@ -400,6 +436,9 @@ int main(int argc, char **argv) lhub = sxhub_create(); /* create sxhub for link creation */ if(!lhub) return ENOMEM; + /* set sxhub log function */ + sxhub_set_logops(lhub, __log); + i = sxhub_setsslserts(lhub, rootca, cert, cert); if(i) return i; diff --git a/examples/filelistd.c b/examples/filelistd.c index 943e847..228c38d 100644 --- a/examples/filelistd.c +++ b/examples/filelistd.c @@ -151,6 +151,31 @@ static int __secure_check(sxlink_t *l) return SXE_SUCCESS; } +/* + * This function might be used to output log in any format you like. + * In this case it is a prefix with date and time marks before a message body. + */ +static int __log(const sxlogtype_t type, const char *fmt, ...) +{ + int r = 0; + + time_t timer; + char buffer[26]; + struct tm* tm_info; + + time(&timer); + tm_info = localtime(&timer); + + strftime(buffer, 26, "%Y/%m/%d %H:%M:%S", tm_info); + r += fprintf(stderr, "[%s] ", buffer); + + va_list arglist; + va_start(arglist, fmt); + r += vfprintf(stderr, fmt, arglist); + va_end(arglist); + return r; +} + /* Our RPC functions it used to get a message and reply */ static int __dir_open(void *m, sexp_t *sx) { @@ -336,6 +361,10 @@ int main(int argc, char **argv) fprintf(stderr, "Subsystem init failed: %d\n", opt); return 2; } + + /* set sxhub log function */ + sxhub_set_logops(sxmphub, __log); + /* set working certificates */ opt = sxhub_setsslserts(sxmphub, rootca, cert, cert); if(opt) {