示例#1
0
文件: util.c 项目: vortex314/esp_cbor
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);
}
示例#2
0
/**
 * 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);
}
示例#3
0
void supla_esp_board_set_device_name(char *buffer, uint8 buffer_size) {

		ets_snprintf(buffer, buffer_size, "SONOFF-TOUCH");

}