void IROM SysLog(SysLogLevel level, const char* file, const char* function, const char * format, ...) { char *p; buffer[0] = 0; va_list args; va_start(args, format); if (GetMutex(&logMutex) == 0) { for (p = "$$$:"; *p != 0; p++) uart0WriteWait(*p); for (p = file; *p != 0; p++) uart0WriteWait(*p); for (p = "$$$"; *p != 0; p++) uart0WriteWait(*p); for (p = function; *p != 0; p++) uart0WriteWait(*p); // uart0WriteBytes(":",1); // uart0WriteBytes(function,strlen(function)); // os_printf_plus(" Syslog called by %s ",function); conflicts += 1000; va_end(args); return; } uint32_t time = SysMillis(); ets_vsnprintf(buffer, sizeof(buffer), format, args); va_end(args); char dst[40]; dst[0] = '\0'; strAlign(dst, 18, file, strlen(file)); strAlign(&dst[18], 18, function, strlen(function)); // if (level > LOG_INFO) { // put log in mqtt buffer // ets_sprintf(lastLog, "%s:%s:%s", SysLogLevelStr[level], dst, buffer); // } ets_snprintf(lastLog, sizeof(lastLog), "%10u | %s | %s\n", time, dst, buffer); uart0WriteBytes(lastLog, strlen(lastLog)); // os_delay_us(1000); ets_delay_us(10000); // os_printf_plus(); ReleaseMutex(&logMutex); }
/** * Create a SYSLOG message. Refer to RFC5424. * * This function has been adapted for use by this application and is not * intended to be a general purpose function. */ void ICACHE_FLASH_ATTR syslog(int msg_id, ...) { char *buffer; size_t new_buf_len; int written; int total_written; int space_left; int write_index = -1; sint16 rc; const SYSLOG_MSG *msg = &syslog_msgs[msg_id]; /** * Format is: * * - "<" Priority ">" * - Version <space> * - Timestamp <space> * - Hostname <space> * - Application name <space> * - Process ID <space> * - Msg ID <space> * - Structured-data <optional> * - Message. * * At this time, most info is being ignored. */ va_list argp; va_start(argp, msg_id); // CONSOLE("Debug: IN: Syslog: %d\n", msg_id); write_index = syslog_write_index(); buffer = syslog_stack[write_index]; space_left = SYSLOG_BUF_SIZE; total_written = 0; written = ets_snprintf(buffer, space_left, "<%d>%d %s %s %s %d %d", (msg->prival | LOG_LOCAL0), SYSLOG_VERSION, sntp_get_syslog_time(), syslog_ip_address, syslog_app_name, msg->proc_id, msg_id); space_left -= written; total_written += written; #ifndef SYSLOG_STRUCTURED_IN_MSG if (msg->parms != NULL) { written = ets_snprintf( &buffer[total_written], space_left, " [%s ", syslog_app_name); space_left -=written; total_written += written; written = ets_vsnprintf( &buffer[total_written], space_left, msg->parms, argp); space_left -=written; total_written += written; written = ets_snprintf(&buffer[total_written], space_left, "]"); space_left -=written; total_written += written; } else #endif { // NILLVALUE (lone '-') written = ets_snprintf(&buffer[total_written], space_left, " -"); space_left -=written; total_written += written; } if (msg->msg != NULL) { written = ets_snprintf( &buffer[total_written], space_left, " "); space_left -=written; total_written += written; written = ets_snprintf( &buffer[total_written], space_left, msg->msg); space_left -=written; total_written += written; } #ifdef SYSLOG_STRUCTURED_IN_MSG /** * Append any structured data as part of the message. */ if (msg->parms != NULL) { written = ets_snprintf( &buffer[total_written], space_left, " [%s ", syslog_app_name); space_left -=written; total_written += written; written = ets_vsnprintf( &buffer[total_written], space_left, msg->parms, argp); space_left -=written; total_written += written; written = ets_snprintf(&buffer[total_written], space_left, "]"); space_left -=written; total_written += written; } #endif syslog_length[write_index] = total_written; CONSOLE(buffer); // CONSOLE("Debug: MID: Syslog: %d\n", msg_id); syslog_sendto(); // CONSOLE("Debug: OUT: Syslog: %d\n", msg_id); va_end(argp); }
void supla_esp_board_set_device_name(char *buffer, uint8 buffer_size) { ets_snprintf(buffer, buffer_size, "SONOFF-TOUCH"); }