Ejemplo n.º 1
0
int logger_log_header(logger_p log, unsigned int log_level, const char *srcname, unsigned int line_no)
{
	int ret_val = 0;
	struct tm cur_time;
	struct tm cur_ftime;
        struct tm create_ftime;
	time_t temp_time;
	char logtag[64]={0x00};
	if(log == NULL)
	{
		return -1;
	}

	if(log_level > log->level)
	{
		log->is_log = 0;
		return 0;
	}
	log->is_log = 1;
	if(log->fp == NULL){
		logger_open(log);  // If Logger is running for first time
	}
	/////check for new file generation condition///////////
	temp_time = time(NULL);
	if((temp_time - log->create_time) > log->interval)
	{
		logger_open(log);
	}
	// for Sysnc For Hour Wise
        localtime_r(&temp_time, &cur_ftime);
        localtime_r(&log->create_time, &create_ftime);
        if((cur_ftime.tm_min == 0) && (cur_ftime.tm_hour != create_ftime.tm_hour)){
                logger_open(log);
        }
	/////prepare tag//////////
	//time(&temp_time);
	temp_time = time(NULL);
	localtime_r(&temp_time , &cur_time);
	sprintf(logtag ,"[%s|%s|%d|%02d:%02d:%02d|%s]" ,log->tag ,srcname ,line_no ,cur_time.tm_hour ,cur_time.tm_min ,cur_time.tm_sec ,log->leveltag[log_level]);
	/*  to be designed
	if(log_level == DISP_SCREEN)
	{
		fprintf(stdout ,"%s",logtag);
		fflush(stdout);
	}
	*/
	ret_val = fprintf(log->fp ,"%s" ,logtag);
	fflush(log->fp);
	return ret_val;
}
Ejemplo n.º 2
0
int main(int ac, char *av[])
{
    int res = 0;
    size_t i;
    fstorage *res_fs;
    fstorage *old_fs;
    struct fstorage_connect_config fscc;

    size_t upd_count = 0;
    fstorage *upd_fs[MAX_GSG_UPDATE_FILES];
    //struct fstorage_connect_config upd_fscc[MAX_GSG_UPDATE_FILES];

#ifdef WITH_LOGGER
    logger_open("updatesigdb", LOGGER_OPEN_NORMAL);
    logger_add_file(2, LOGGER_ALL | LOGGER_USER);
#endif // WITH_LOGGER

    memset(&upd_fs, 0, sizeof(fstorage *)*MAX_GSG_UPDATE_FILES);

#ifdef HAVE_MD5CHECK
    int i;
    for(i = 1; i < ac; i++)
	{
	    if(strcmp(av[i], "--print-version") == 0)
		{
		    print_version();
#ifdef WITH_LOGGER
		    logger_close()
#endif // WITH_LOGGER
		    return 0;
		}
	}
Ejemplo n.º 3
0
int main(int argc, char* argv[])
{
#ifdef WIN32
	acl::acl_cpp_init();
#endif
	logger_open("fs_benchmark.log", "fs_benchmark");

	int   ch;
	int   nthreads = 2;

#ifdef WIN32
	snprintf(__path, sizeof(__path), "var/%d", (int) _getpid());
#else
	snprintf(__path, sizeof(__path), "var/%d", (int) getpid());
#endif
	while ((ch = getopt(argc, argv, "hn:c:l:kp:P:")) > 0)
	{
		switch (ch)
		{
		case 'h':
			usage(argv[0]);
			return 0;
		case 'n':
			nthreads = atoi(optarg);
			break;
		case 'c':
			__nfiles = atoi(optarg);
			break;
		case 'l':
			__length = atoi(optarg);
			break;
		case 'k':
			__kernel_event = true;
			break;
		case 'p':
#ifdef WIN32
			snprintf(__path, sizeof(__path), "%s/%d", optarg, (int) _getpid());
#else
			snprintf(__path, sizeof(__path), "%s/%d", optarg, (int) getpid());
#endif
			break;
		case 'P':
			__parallel = atoi(optarg);
			if (__parallel <= 0)
				__parallel = 1;
			break;
		default:
			break;
		}
	}

	for (size_t i = 0; i < sizeof(__data); i++)
	{
		__data[i] = 'X';
	}

	acl_make_dirs(__path, 0700);

	// 创建线程池句柄
	acl_pthread_pool_t* tp = acl_thread_pool_create(nthreads, 0);

	// 添加线程处理任务
	for (int i = 0; i < nthreads; i++)
		acl_pthread_pool_add(tp, thread_main, NULL);

	// 销毁线程池
	acl_pthread_pool_destroy(tp);

	logger_close();

#ifdef WIN32
	printf("enter any key to exit\r\n");
	getchar();
#endif
	return 0;
}
Ejemplo n.º 4
0
Archivo: logger.c Proyecto: alisw/uuid
/*
 * logger -- read and log utility
 *
 *	Reads from an input and arranges to write the result on the system
 *	log.
 */
int main(int argc, char **argv)
{
	struct logger_ctl ctl = {
		.fd = -1,
		.pid = 0,
		.pri = LOG_USER | LOG_NOTICE,
		.prio_prefix = 0,
		.tag = NULL,
		.unix_socket = NULL,
		.unix_socket_errors = 0,
		.server = NULL,
		.port = NULL,
		.hdr = NULL,
		.msgid = NULL,
		.socket_type = ALL_TYPES,
		.max_message_size = 1024,
		.rfc5424_time = 1,
		.rfc5424_tq = 1,
		.rfc5424_host = 1,
		.skip_empty_lines = 0
	};
	int ch;
	int stdout_reopened = 0;
	int unix_socket_errors_mode = AF_UNIX_ERRORS_AUTO;
#ifdef HAVE_LIBSYSTEMD
	FILE *jfd = NULL;
#endif
	static const struct option longopts[] = {
		{ "id",		   optional_argument, 0, OPT_ID		   },
		{ "stderr",	   no_argument,	      0, 's'		   },
		{ "file",	   required_argument, 0, 'f'		   },
		{ "no-act",        no_argument,       0, OPT_NOACT,	   },
		{ "priority",	   required_argument, 0, 'p'		   },
		{ "tag",	   required_argument, 0, 't'		   },
		{ "socket",	   required_argument, 0, 'u'		   },
		{ "socket-errors", required_argument, 0, OPT_SOCKET_ERRORS },
		{ "udp",	   no_argument,	      0, 'd'		   },
		{ "tcp",	   no_argument,	      0, 'T'		   },
		{ "server",	   required_argument, 0, 'n'		   },
		{ "port",	   required_argument, 0, 'P'		   },
		{ "version",	   no_argument,	      0, 'V'		   },
		{ "help",	   no_argument,	      0, 'h'		   },
		{ "octet-count",   no_argument,	      0, OPT_OCTET_COUNT   },
		{ "prio-prefix",   no_argument,	      0, OPT_PRIO_PREFIX   },
		{ "rfc3164",	   no_argument,	      0, OPT_RFC3164	   },
		{ "rfc5424",	   optional_argument, 0, OPT_RFC5424	   },
		{ "size",	   required_argument, 0, 'S'		   },
		{ "msgid",	   required_argument, 0, OPT_MSGID	   },
		{ "skip-empty",	   no_argument,	      0, 'e'		   },
#ifdef HAVE_LIBSYSTEMD
		{ "journald",	   optional_argument, 0, OPT_JOURNALD	   },
#endif
		{ NULL,		   0,		      0, 0		   }
	};

	setlocale(LC_ALL, "");
	bindtextdomain(PACKAGE, LOCALEDIR);
	textdomain(PACKAGE);
	atexit(close_stdout);

	while ((ch = getopt_long(argc, argv, "ef:ip:S:st:u:dTn:P:Vh",
					    longopts, NULL)) != -1) {
		switch (ch) {
		case 'f':		/* file to log */
			if (freopen(optarg, "r", stdin) == NULL)
				err(EXIT_FAILURE, _("file %s"), optarg);
			stdout_reopened = 1;
			break;
		case 'e':
			ctl.skip_empty_lines = 1;
			break;
		case 'i':		/* log process id also */
			ctl.pid = logger_getpid();
			break;
		case OPT_ID:
			if (optarg) {
				const char *p = optarg;

				if (*p == '=')
					p++;
				ctl.pid = strtoul_or_err(optarg, _("failed to parse id"));
			} else
				ctl.pid = logger_getpid();
			break;
		case 'p':		/* priority */
			ctl.pri = pencode(optarg);
			break;
		case 's':		/* log to standard error */
			ctl.stderr_printout = 1;
			break;
		case 't':		/* tag */
			ctl.tag = optarg;
			break;
		case 'u':		/* unix socket */
			ctl.unix_socket = optarg;
			break;
		case 'S':		/* max message size */
			ctl.max_message_size = strtosize_or_err(optarg,
				_("failed to parse message size"));
			break;
		case 'd':
			ctl.socket_type = TYPE_UDP;
			break;
		case 'T':
			ctl.socket_type = TYPE_TCP;
			break;
		case 'n':
			ctl.server = optarg;
			break;
		case 'P':
			ctl.port = optarg;
			break;
		case 'V':
			printf(UTIL_LINUX_VERSION);
			exit(EXIT_SUCCESS);
		case 'h':
			usage(stdout);
		case OPT_OCTET_COUNT:
			ctl.octet_count = 1;
			break;
		case OPT_PRIO_PREFIX:
			ctl.prio_prefix = 1;
			break;
		case OPT_RFC3164:
			ctl.syslogfp = syslog_rfc3164_header;
			break;
		case OPT_RFC5424:
			ctl.syslogfp = syslog_rfc5424_header;
			if (optarg)
				parse_rfc5424_flags(&ctl, optarg);
			break;
		case OPT_MSGID:
			if (strchr(optarg, ' '))
				errx(EXIT_FAILURE, _("--msgid cannot contain space"));
			ctl.msgid = optarg;
			break;
#ifdef HAVE_LIBSYSTEMD
		case OPT_JOURNALD:
			if (optarg) {
				jfd = fopen(optarg, "r");
				if (!jfd)
					err(EXIT_FAILURE, _("cannot open %s"),
					    optarg);
			} else
				jfd = stdin;
			break;
#endif
		case OPT_SOCKET_ERRORS:
			unix_socket_errors_mode = parse_unix_socket_errors_flags(optarg);
			break;
		case OPT_NOACT:
			ctl.noact = 1;
			break;
		case '?':
		default:
			usage(stderr);
		}
	}
	argc -= optind;
	argv += optind;
	if (stdout_reopened && argc)
		warnx(_("--file <file> and <message> are mutually exclusive, message is ignored"));
#ifdef HAVE_LIBSYSTEMD
	if (jfd) {
		int ret = journald_entry(&ctl, jfd);
		if (stdin != jfd)
			fclose(jfd);
		if (ret)
			errx(EXIT_FAILURE, _("journald entry could not be written"));
		return EXIT_SUCCESS;
	}
#endif
	switch (unix_socket_errors_mode) {
	case AF_UNIX_ERRORS_OFF:
		ctl.unix_socket_errors = 0;
		break;
	case AF_UNIX_ERRORS_ON:
		ctl.unix_socket_errors = 1;
		break;
	case AF_UNIX_ERRORS_AUTO:
		ctl.unix_socket_errors = ctl.noact || ctl.stderr_printout;
#ifdef HAVE_LIBSYSTEMD
		ctl.unix_socket_errors |= !!sd_booted();
#endif
		break;
	default:
		abort();
	}
	logger_open(&ctl);
	if (0 < argc)
		logger_command_line(&ctl, argv);
	else
		/* Note. --file <arg> reopens stdin making the below
		 * function to be used for file inputs. */
		logger_stdin(&ctl);
	logger_close(&ctl);
	return EXIT_SUCCESS;
}
Ejemplo n.º 5
0
static int logger_rollFiles(LOG_PROPERTIES_T *pLogProperties) {

  int i;
  char buf[16];
  char logNameOld[sizeof(pLogProperties->g_logName) + sizeof(buf)];
  char logNameNew[sizeof(pLogProperties->g_logName) + sizeof(buf)];
  size_t len;
  //struct timeval tv0, tv1;
  //int ms;

#ifdef WIN32
  struct _stat st;
#else // WIN32
  struct stat st;
#endif // WIN32

  //gettimeofday(&tv0, NULL);

  len = strlen(pLogProperties->g_logName);
  strcpy(logNameOld, pLogProperties->g_logName);
  strcpy(logNameNew, pLogProperties->g_logName);

  for(i = pLogProperties->g_maxFilesNum; i >= 1; i--) {

    if(i <= 1) {
      logger_close(pLogProperties);
      logNameOld[len] = '\0';
    } else {
      sprintf(buf, ".%d", i-1);
      strcpy(&logNameOld[len], buf);
    }

#ifdef WIN32
    if(_stat(logNameOld, &st) == 0) {
#else // WIN32
    if(stat(logNameOld, &st) == 0) {
#endif // WIN32

      sprintf(buf, ".%d", i);
      strcpy(&logNameNew[len], buf);

      if(fileops_MoveFile(logNameOld, logNameNew) != 0) {
        // call internal logger_log method to avoid infinite loop possibility by
        // checking for roll
        logger_log(pLogProperties, X_ERROR("failed to move file '%s' -> '%s'"), logNameOld, logNameNew);
      }
    }

  }

  logger_open(pLogProperties);

  //gettimeofday(&tv1, NULL);

  //ms = ((tv1.tv_sec - tv0.tv_sec) * 1000) + ((tv1.tv_usec - tv0.tv_usec) / 1000);

  // call internal logger_log method to avoid infinite loop possibility by
  // checking for roll
  //logger_log(pLogProperties, X_DEBUG("logger_rollFiles took %d ms to complete."), ms);

  return 0;
}

extern void avc_dumpHex(void *fparg, const unsigned char *buf, unsigned int len, int ascii);

void logger_LogHex(int sev, const void *buf, unsigned int len, int printAscii) {

  LOG_PROPERTIES_T *pLogProperties = NULL;
  pLogProperties = g_plogProps;

  if(!((pLogProperties->g_log_flags & (LOG_FLAG_USESYSLOG | LOG_FLAG_USESTDERR)) ||
       (pLogProperties->g_fp != NULL &&  (pLogProperties->g_log_flags & LOG_FLAG_USEFILEOUTPUT)))) {
    return;
  }

  if(pLogProperties->g_log_flags & LOG_FLAG_USELOCKING) {
    pthread_mutex_lock(&pLogProperties->g_mtx_log);
  }

  if((pLogProperties->g_log_flags & LOG_FLAG_USESTDERR) &&
    ((sev > 0 && sev <= pLogProperties->g_log_level_stderr) ||
    (sev < 0 && sev >= (-1 * pLogProperties->g_log_level_stderr)))) {

     avc_dumpHex(stderr, (const unsigned char *) buf, len, printAscii);
  }

  if(pLogProperties->g_fp &&
    (pLogProperties->g_log_flags & LOG_FLAG_USEFILEOUTPUT) &&
    ((sev > 0 && sev <= pLogProperties->g_log_level) ||
    (sev < 0 && sev >= (-1 * pLogProperties->g_log_level)))) {

     avc_dumpHex(pLogProperties->g_fp, (const unsigned char *) buf, len, printAscii);

    if(logger_checkRoll(pLogProperties) > 0) {
      logger_rollFiles(pLogProperties);
    }
  }

  if(pLogProperties->g_log_flags & LOG_FLAG_USELOCKING) {
    pthread_mutex_unlock(&pLogProperties->g_mtx_log);
  }

}
Ejemplo n.º 6
0
int logger_Init(const char *filePath,
                const char *fileName,
                unsigned int maxFilesNum,
                unsigned int maxFileSz,
                unsigned int outputFlags) {

  size_t len = 0u, len2 = 0u;
  LOG_PROPERTIES_T *pLogProperties = g_plogProps;

  // Init of "global" variables
  pthread_mutex_init(&pLogProperties->g_mtx_log, NULL);

  pLogProperties->g_maxFilesNum = LOGGER_MAX_FILES;
  pLogProperties->g_maxFileSz = LOGGER_MAX_FILE_SZ;
  pLogProperties->g_fp = NULL;
  pLogProperties->g_fd = -1;
  pLogProperties->g_log_flags = outputFlags;

  //if(!(pLogProperties->g_log_flags & LOG_FLAG_USEFILEOUTPUT)) {
  //  pLogProperties->g_log_flags |= LOG_FLAG_DEFAULT;
  //}
  if(pLogProperties->g_log_level == 0) {
    pLogProperties->g_log_level = S_INFO;
  }
  pLogProperties->g_log_level_stderr = pLogProperties->g_log_level;

  //if(pLogProperties->g_fp) {
  //  logger_close(pLogProperties);
  //  pLogProperties->g_logName[0] = '\0';
  //}

  if(fileName == NULL) {
    pLogProperties->g_log_flags &= ~LOG_FLAG_USEFILEOUTPUT;
    return -1;
  }

  if(maxFilesNum > 0) {
    pLogProperties->g_maxFilesNum = maxFilesNum;
  }
  if(maxFileSz > 0) {
    pLogProperties->g_maxFileSz = maxFileSz;
  }

  if(filePath) {
    len = strlen(filePath);
  }

  len2 = strlen(fileName); 

  if(len + len2 + 6 >= sizeof(pLogProperties->g_logName)) {
    return -1;
  }

  memset(pLogProperties->g_logName, 0, sizeof(pLogProperties->g_logName));

  if(filePath && len > 0) {
    strncpy(pLogProperties->g_logName, filePath, sizeof(pLogProperties->g_logName) -1);

    if(pLogProperties->g_logName[len - 1] != DIR_DELIMETER) {
      pLogProperties->g_logName[len++] = DIR_DELIMETER;
    }
  }

  strncpy(&pLogProperties->g_logName[len], fileName, sizeof(pLogProperties->g_logName) - (len +1));
  len += len2;

  if(!strstr(fileName, ".log")) {
    strncat(&pLogProperties->g_logName[len], ".log", sizeof(pLogProperties->g_logName) - (len+1));
  }

  return logger_open(pLogProperties);
}
Ejemplo n.º 7
0
int logger_SetFile(const char *fileDir,
                  const char *fileName,
                  unsigned int maxFilesNum,
                  unsigned int maxFileSz,
                  unsigned int outputFlags) {

  size_t len = 0u, len2 = 0u;
  LOG_PROPERTIES_T *pLogProperties =  g_plogProps;

  pthread_mutex_init(&pLogProperties->g_mtx_log, NULL);

  if(pLogProperties->g_fp) {
    logger_close(pLogProperties);
  }

  if(!fileName) {
    return -1;
  }

  //
  // Init of "global" variables
  //
  pLogProperties->g_maxFilesNum = maxFilesNum;
  pLogProperties->g_maxFileSz = maxFileSz;
  // XOR with flags suitable for fileoutput 
  pLogProperties->g_log_flags |= LOG_FLAG_USEFILEOUTPUT | (outputFlags & 
         (LOG_FLAG_USELOCKING | LOG_OUTPUT_PRINT_DATE | LOG_OUTPUT_PRINT_SEV | LOG_OUTPUT_PRINT_SEV_ERROR | 
          LOG_OUTPUT_PRINT_PID | LOG_OUTPUT_PRINT_TID | LOG_OUTPUT_PRINT_TAG));
  

  if(fileDir) {
    len = strlen(fileDir);
  }

  len2 = strlen(fileName); 

  if(len + len2 + 6 >= sizeof(pLogProperties->g_logName)) {
    return -1;
  }

  memset(pLogProperties->g_logName, 0, sizeof(pLogProperties->g_logName));

  if(fileDir && len > 0) {
    strncpy(pLogProperties->g_logName, fileDir, sizeof(pLogProperties->g_logName) -1);

    if(pLogProperties->g_logName[len - 1] != DIR_DELIMETER) {
      pLogProperties->g_logName[len++] = DIR_DELIMETER;
    }
  }

  strncpy(&pLogProperties->g_logName[len], fileName, 
          sizeof(pLogProperties->g_logName) - (len +1));
  len += len2;

  if(!strstr(fileName, ".log")) {
    strncat(&pLogProperties->g_logName[len], ".log", 
           sizeof(pLogProperties->g_logName) - (len+1));
  }

  return logger_open(pLogProperties);
}
Ejemplo n.º 8
0
/*
 * logger -- read and log utility
 *
 *	Reads from an input and arranges to write the result on the system
 *	log.
 */
int main(int argc, char **argv)
{
	struct logger_ctl ctl = {
		.fd = -1,
		.pid = 0,
		.pri = LOG_NOTICE,
		.prio_prefix = 0,
		.tag = NULL,
		.unix_socket = NULL,
		.server = NULL,
		.port = NULL,
		.socket_type = ALL_TYPES,
		.rfc5424_time = 1,
		.rfc5424_tq = 1,
		.rfc5424_host = 1,
	};
	int ch;
	int stdout_reopened = 0;
#ifdef HAVE_LIBSYSTEMD
	FILE *jfd = NULL;
#endif
	static const struct option longopts[] = {
		{ "id",		optional_argument,  0, 'i' },
		{ "stderr",	no_argument,	    0, 's' },
		{ "file",	required_argument,  0, 'f' },
		{ "priority",	required_argument,  0, 'p' },
		{ "tag",	required_argument,  0, 't' },
		{ "socket",	required_argument,  0, 'u' },
		{ "udp",	no_argument,	    0, 'd' },
		{ "tcp",	no_argument,	    0, 'T' },
		{ "server",	required_argument,  0, 'n' },
		{ "port",	required_argument,  0, 'P' },
		{ "version",	no_argument,	    0, 'V' },
		{ "help",	no_argument,	    0, 'h' },
		{ "prio-prefix", no_argument, 0, OPT_PRIO_PREFIX },
		{ "rfc3164",	no_argument,  0, OPT_RFC3164 },
		{ "rfc5424",	optional_argument,  0, OPT_RFC5424 },
#ifdef HAVE_LIBSYSTEMD
		{ "journald",   optional_argument,  0, OPT_JOURNALD },
#endif
		{ NULL,		0, 0, 0 }
	};

	setlocale(LC_ALL, "");
	bindtextdomain(PACKAGE, LOCALEDIR);
	textdomain(PACKAGE);
	atexit(close_stdout);

	while ((ch = getopt_long(argc, argv, "f:i::p:st:u:dTn:P:Vh",
					    longopts, NULL)) != -1) {
		switch (ch) {
		case 'f':		/* file to log */
			if (freopen(optarg, "r", stdin) == NULL)
				err(EXIT_FAILURE, _("file %s"), optarg);
			stdout_reopened = 1;
			break;
		case 'i':		/* log process id also */
			if (optarg) {
				const char *p = optarg;

				if (*p == '=')
					p++;
				ctl.pid = strtoul_or_err(optarg, _("failed to parse id"));
			} else
				ctl.pid = getpid();
			break;
		case 'p':		/* priority */
			ctl.pri = pencode(optarg);
			break;
		case 's':		/* log to standard error */
			ctl.stderr_printout = 1;
			break;
		case 't':		/* tag */
			ctl.tag = optarg;
			break;
		case 'u':		/* unix socket */
			ctl.unix_socket = optarg;
			break;
		case 'd':
			ctl.socket_type = TYPE_UDP;
			break;
		case 'T':
			ctl.socket_type = TYPE_TCP;
			break;
		case 'n':
			ctl.server = optarg;
			break;
		case 'P':
			ctl.port = optarg;
			break;
		case 'V':
			printf(UTIL_LINUX_VERSION);
			exit(EXIT_SUCCESS);
		case 'h':
			usage(stdout);
		case OPT_PRIO_PREFIX:
			ctl.prio_prefix = 1;
			break;
		case OPT_RFC3164:
			ctl.syslogfp = syslog_rfc3164;
			break;
		case OPT_RFC5424:
			ctl.syslogfp = syslog_rfc5424;
			if (optarg)
				parse_rfc5424_flags(&ctl, optarg);
			break;
#ifdef HAVE_LIBSYSTEMD
		case OPT_JOURNALD:
			if (optarg) {
				jfd = fopen(optarg, "r");
				if (!jfd)
					err(EXIT_FAILURE, _("cannot open %s"),
					    optarg);
			} else
				jfd = stdin;
			break;
#endif
		case '?':
		default:
			usage(stderr);
		}
	}
	argc -= optind;
	argv += optind;
	if (stdout_reopened && argc)
		warnx(_("--file <file> and <message> are mutually exclusive, message is ignored"));
#ifdef HAVE_LIBSYSTEMD
	if (jfd) {
		int ret = journald_entry(jfd);
		if (stdin != jfd)
			fclose(jfd);
		if (ret)
			errx(EXIT_FAILURE, _("journald entry could not be wrote"));
		return EXIT_SUCCESS;
	}
#endif
	logger_open(&ctl);
	if (0 < argc)
		logger_command_line(&ctl, argv);
	else
		/* Note. --file <arg> reopens stdin making the below
		 * function to be used for file inputs. */
		logger_stdin(&ctl);
	logger_close(&ctl);
	return EXIT_SUCCESS;
}
Ejemplo n.º 9
0
      logger_printf(logfile, "%04d-%02d-%02d %2d:%02d:%02d "
                      "%s ERROR %d: %s : %s\n",
              t.tm_year + 1900, t.tm_mon + 1,
              t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec,
              event->general_user, event->general_error_code,
              event->general_command, event->general_query);
    }
  }
}


static int sql_error_log_init(void *p __attribute__((unused)))
{
  logger_init_mutexes();

  logfile= logger_open(filename, size_limit, rotations);
  if (logfile == NULL) {
    fprintf(stderr, "Could not create file '%s'\n",
            filename);
    return 1;
  }
  count = 0;
  return 0;
}


static int sql_error_log_deinit(void *p __attribute__((unused)))
{
  if (logfile)
    logger_close(logfile);
  return 0;
Ejemplo n.º 10
0
int
main(int argc, char *argv[]) {
	int ret = EX_OK;
	primwatch_t primwatch;
	const char *log_type;
	const char *log_facility;
	const char *log_prefix;
	char log_path[MAXPATHLEN];
	const char *pid_file_path;
	const char *cntrl_addr;
	const char *cntrl_port;
	int64_t verbose_level;

	if (logger_create()) {
		fprintf(stderr, "failed in create logger");
		ret = EX_OSERR;
	}
	if (primwatch_initialize(&primwatch)) {
		fprintf(stderr, "failed in initaizliae");
		ret = EX_OSERR;
		goto last;
	}
	parse_args(&primwatch, argc, argv);
	if (logger_set_foreground(primwatch.foreground)) {
		fprintf(stderr, "failed in create logger");
		ret = EX_OSERR;
	}
	if (config_manager_load(primwatch.config_manager, primwatch.config_file)) {
		LOG(LOG_LV_ERR, "failed in load config file %s", primwatch.config_file);
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_string(primwatch.config_manager, &log_type , "logType", NULL)) {
		LOG(LOG_LV_ERR, "failed in get log type from config");
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_string(primwatch.config_manager, &log_facility , "logFacility", NULL)) {
		LOG(LOG_LV_ERR, "failed in get log facility from config");
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_string(primwatch.config_manager, &log_prefix , "logPath", NULL)) {
		LOG(LOG_LV_ERR, "failed in get log path from config");
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_string(primwatch.config_manager, &pid_file_path , "pidFilePath", NULL)) {
		LOG(LOG_LV_ERR, "failed in get pid file path from config");
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_string(primwatch.config_manager, &cntrl_addr , "controllerAddress", NULL)) {
		LOG(LOG_LV_ERR, "failed in get controller address from config");
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_string(primwatch.config_manager, &cntrl_port , "controllerPort", NULL)) {
		LOG(LOG_LV_ERR, "failed in get controller port from config");
		ret = EX_DATAERR;
		goto last;
	}
	if (config_manager_get_long(primwatch.config_manager, &verbose_level , "verboseLevel", NULL)) {
		LOG(LOG_LV_ERR, "failed in get verbose level from config");
		ret = EX_DATAERR;
		goto last;
	}
	snprintf(log_path, sizeof(log_path), "%s.daemon", log_prefix);
	if (logger_open((log_level_t)verbose_level, log_type, PROGIDENT, LOG_PID, log_facility, log_path)) {
		LOG(LOG_LV_ERR, "failed in open log");
		ret = EX_OSERR;
		goto last;
	}
        if (!primwatch.foreground) {
		if (daemon(1,1)) {
			LOG(LOG_LV_ERR, "failed in daemon");
			ret = EX_OSERR;
			goto last;
		}
		setsid();
	}
	if (primwatch_event_initialize(&primwatch)) {
		fprintf(stderr, "failed in initaizliae");
		ret = EX_OSERR;
		goto last;
	}
	if (make_pidfile(pid_file_path)) {
		LOG(LOG_LV_ERR, "failed in create file of process id");
		ret = EX_OSERR;
		goto last;
	}
	if (watcher_polling_start(primwatch.watcher)) {
		LOG(LOG_LV_ERR, "failed in initial polling");
		ret = EX_OSERR;
		goto last;
	}
	if (controller_start(primwatch.controller, cntrl_addr, cntrl_port)) {
		LOG(LOG_LV_ERR, "failed in start controller");
		ret = EX_OSERR;
		goto last;
	}
	signal_set(&primwatch.sig_int_event, SIGINT, primwatch_terminate, &primwatch);
	event_priority_set(&primwatch.sig_int_event, DEFAULT_EVENT_PRIORITY + 30);
	event_base_set(primwatch.event_base, &primwatch.sig_int_event);
	signal_add(&primwatch.sig_int_event, NULL);
	signal_set(&primwatch.sig_term_event, SIGTERM, primwatch_terminate, &primwatch);
	event_priority_set(&primwatch.sig_term_event, DEFAULT_EVENT_PRIORITY + 30);
	event_base_set(primwatch.event_base, &primwatch.sig_term_event);
	signal_add(&primwatch.sig_term_event, NULL);
	signal_set(&primwatch.sig_hup_event, SIGHUP, primwatch_reload, &primwatch);
	event_priority_set(&primwatch.sig_hup_event, DEFAULT_EVENT_PRIORITY + 30);
	event_base_set(primwatch.event_base, &primwatch.sig_hup_event);
	signal_add(&primwatch.sig_hup_event, NULL);
	signal_set(&primwatch.sig_chld_event, SIGCHLD, primwatch_sigchild, &primwatch);
	event_priority_set(&primwatch.sig_chld_event, DEFAULT_EVENT_PRIORITY + 30);
	event_base_set(primwatch.event_base, &primwatch.sig_chld_event);
	signal_add(&primwatch.sig_chld_event, NULL);
	if (event_base_dispatch(primwatch.event_base) == -1) {
		LOG(LOG_LV_ERR, "failed in event base dispatch");
		ret = EX_OSERR;
		goto last;
	}
last:
	unlink(pid_file_path);
	logger_close();
	logger_destroy();
	primwatch_finalize(&primwatch);

	return ret;
}
Ejemplo n.º 11
0
void _main(int argc, char *argv[])
{
   (void)argc;
   (void)argv;
   syslog(LOG_INFO, "initializing core");
   
   /* init SCL subsystem: */
   syslog(LOG_INFO, "initializing signaling and communication link (SCL)");
   if (scl_init("core") != 0)
   {
      syslog(LOG_CRIT, "could not init scl module");
      exit(EXIT_FAILURE);
   }
   
   /* init params subsystem: */
   syslog(LOG_INFO, "initializing opcd interface");
   opcd_params_init("core.", 1);
   
   /* initialize logger: */
   syslog(LOG_INFO, "opening logger");
   if (logger_open() != 0)
   {
      syslog(LOG_CRIT, "could not open logger");
      exit(EXIT_FAILURE);
   }
   syslog(LOG_CRIT, "logger opened");
   sleep(1); /* give scl some time to establish
                a link between publisher and subscriber */

   LOG(LL_INFO, "+------------------+");
   LOG(LL_INFO, "|   core startup   |");
   LOG(LL_INFO, "+------------------+");

   LOG(LL_INFO, "initializing system");

   /* set-up real-time scheduling: */
   struct sched_param sp;
   sp.sched_priority = sched_get_priority_max(SCHED_FIFO);
   sched_setscheduler(getpid(), SCHED_FIFO, &sp);
   if (mlockall(MCL_CURRENT | MCL_FUTURE))
   {
      LOG(LL_ERROR, "mlockall() failed");
      exit(EXIT_FAILURE);
   }

   /* initialize hardware/drivers: */
   omap_i2c_bus_init();
   baro_altimeter_init();
   ultra_altimeter_init();
   ahrs_init();
   motors_init();
   voltage_reader_start();
   //gps_init();
   
   LOG(LL_INFO, "initializing model/controller");
   model_init();
   ctrl_init();
   
   /* initialize command interface */
   LOG(LL_INFO, "initializing cmd interface");
   cmd_init();
   
   /* prepare main loop: */
   for (int i = 0; i < NUM_AVG; i++)
   {
      output_avg[i] = sliding_avg_create(OUTPUT_RATIO, 0.0f);
   }

   LOG(LL_INFO, "system up and running");
   struct timespec ts_curr;
   struct timespec ts_prev;
   struct timespec ts_diff;
   clock_gettime(CLOCK_REALTIME, &ts_curr);
 
   /* run model and controller: */
   while (1)
   {
      /* calculate dt: */
      ts_prev = ts_curr;
      clock_gettime(CLOCK_REALTIME, &ts_curr);
      TIMESPEC_SUB(ts_diff, ts_curr, ts_prev);
      float dt = (float)ts_diff.tv_sec + (float)ts_diff.tv_nsec / (float)NSEC_PER_SEC;

      /* read sensor values into model input structure: */
      model_input_t model_input;
      model_input.dt = dt;
      ahrs_read(&model_input.ahrs_data);
      gps_read(&model_input.gps_data);
      model_input.ultra_z = ultra_altimeter_read();
      model_input.baro_z = baro_altimeter_read();

      /* execute model step: */
      model_state_t model_state;
      model_step(&model_state, &model_input);

      /* execute controller step: */
      mixer_in_t mixer_in;
      ctrl_step(&mixer_in, dt, &model_state);
 
      /* set up mixer input: */
      mixer_in.pitch = sliding_avg_calc(output_avg[AVG_PITCH], mixer_in.pitch);
      mixer_in.roll = sliding_avg_calc(output_avg[AVG_ROLL], mixer_in.roll);
      mixer_in.yaw = sliding_avg_calc(output_avg[AVG_YAW], mixer_in.yaw);
      mixer_in.gas = sliding_avg_calc(output_avg[AVG_GAS], mixer_in.gas);

      /* write data to motor mixer: */
      EVERY_N_TIMES(OUTPUT_RATIO, motors_write(&mixer_in));
   }
}
Ejemplo n.º 12
0
void main_init(int argc, char *argv[])
{
   bool override_hw = false;
   if (argc > 1)
   {
      if (strcmp(argv[1], "calibrate") == 0)
         calibrate = true;
      else
         override_hw = true;
   }

   /* init data structures: */
   memset(&pos_in, 0, sizeof(pos_in_t));
   vec3_init(&pos_in.acc);

   /* init SCL subsystem: */
   syslog(LOG_INFO, "initializing signaling and communication link (SCL)");
   if (scl_init("pilot") != 0)
   {
      syslog(LOG_CRIT, "could not init scl module");
      die();
   }
   
   /* init params subsystem: */
   syslog(LOG_INFO, "initializing opcd interface");
   opcd_params_init("pilot.", 1);
   
   /* initialize logger: */
   syslog(LOG_INFO, "opening logger");
   if (logger_open() != 0)
   {
      syslog(LOG_CRIT, "could not open logger");
      die();
   }
   syslog(LOG_CRIT, "logger opened");
   
   LOG(LL_INFO, "initializing platform");
   if (arcade_quad_init(&platform, override_hw) < 0)
   {
      LOG(LL_ERROR, "could not initialize platform");
      die();
   }
   acc_mag_cal_init();
   cmc_init();
 
   const size_t array_len = sizeof(float) * platform.n_motors;
   setpoints = malloc(array_len);
   ASSERT_NOT_NULL(setpoints);
   memset(setpoints, 0, array_len);
   rpm_square = malloc(array_len);
   ASSERT_NOT_NULL(rpm_square);
   memset(rpm_square, 0, array_len);

   LOG(LL_INFO, "initializing model/controller");
   pos_init();
   ne_speed_ctrl_init(REALTIME_PERIOD);
   att_ctrl_init();
   yaw_ctrl_init();
   u_ctrl_init();
   u_speed_init();
   navi_init();

   LOG(LL_INFO, "initializing command interface");
   cmd_init();

   motors_state_init();
   blackbox_init();

   /* init flight logic: */
   flight_logic_init();

   /* init calibration data: */
   cal_init(&gyro_cal, 3, 1000);

   cal_ahrs_init();
   flight_state_init(50, 150, 4.0);
   
   piid_init(REALTIME_PERIOD);

   interval_init(&gyro_move_interval);
   gps_data_init(&gps_data);

   mag_decl_init();
   cal_init(&rc_cal, 3, 500);

   tsfloat_t acc_fg;
   opcd_param_t params[] =
   {
      {"acc_fg", &acc_fg},
      OPCD_PARAMS_END
   };
   opcd_params_apply("main.", params);
   filter1_lp_init(&lp_filter, tsfloat_get(&acc_fg), 0.06, 3);

   cm_init();
   mon_init();
   LOG(LL_INFO, "entering main loop");
}
Ejemplo n.º 13
0
int
log_content_open(log_content_ctx_t **pctx, opts_t *opts,
                 char *srchost, char *srcport,
                 char *dsthost, char *dstport,
                 char *exec_path, char *user, char *group)
{
	log_content_ctx_t *ctx;

	if (*pctx)
		return 0;
	*pctx = malloc(sizeof(log_content_ctx_t));
	if (!*pctx)
		return -1;
	ctx = *pctx;

	if (opts->contentlog_isdir) {
		/* per-connection-file content log (-S) */
		char timebuf[24];
		time_t epoch;
		struct tm *utc;
		char *dsthost_clean, *srchost_clean;

		if (time(&epoch) == -1) {
			log_err_printf("Failed to get time\n");
			goto errout;
		}
		if ((utc = gmtime(&epoch)) == NULL) {
			log_err_printf("Failed to convert time: %s (%i)\n",
			               strerror(errno), errno);
			goto errout;
		}
		if (!strftime(timebuf, sizeof(timebuf),
		              "%Y%m%dT%H%M%SZ", utc)) {
			log_err_printf("Failed to format time: %s (%i)\n",
			               strerror(errno), errno);
			goto errout;
		}
		srchost_clean = sys_ip46str_sanitize(srchost);
		if (!srchost_clean) {
			log_err_printf("Failed to sanitize srchost\n");
			goto errout;
		}
		dsthost_clean = sys_ip46str_sanitize(dsthost);
		if (!dsthost_clean) {
			log_err_printf("Failed to sanitize dsthost\n");
			free(srchost_clean);
			goto errout;
		}
		if (asprintf(&ctx->u.dir.filename, "%s/%s-%s,%s-%s,%s.log",
		             opts->contentlog, timebuf,
		             srchost_clean, srcport,
		             dsthost_clean, dstport) < 0) {
			log_err_printf("Failed to format filename: %s (%i)\n",
			               strerror(errno), errno);
			free(srchost_clean);
			free(dsthost_clean);
			goto errout;
		}
		free(srchost_clean);
		free(dsthost_clean);
	} else if (opts->contentlog_isspec) {
		/* per-connection-file content log with logspec (-F) */
		char *dsthost_clean, *srchost_clean;
		srchost_clean = sys_ip46str_sanitize(srchost);
		if (!srchost_clean) {
			log_err_printf("Failed to sanitize srchost\n");
			goto errout;
		}
		dsthost_clean = sys_ip46str_sanitize(dsthost);
		if (!dsthost_clean) {
			log_err_printf("Failed to sanitize dsthost\n");
			free(srchost_clean);
			goto errout;
		}
		ctx->u.spec.filename = log_content_format_pathspec(
		                                       opts->contentlog,
		                                       srchost_clean, srcport,
		                                       dsthost_clean, dstport,
		                                       exec_path, user, group);
		free(srchost_clean);
		free(dsthost_clean);
		if (!ctx->u.spec.filename) {
			goto errout;
		}
	} else {
		/* single-file content log (-L) */
		if (asprintf(&ctx->u.file.header_req, "[%s]:%s -> [%s]:%s",
		             srchost, srcport, dsthost, dstport) < 0) {
			goto errout;
		}
		if (asprintf(&ctx->u.file.header_resp, "[%s]:%s -> [%s]:%s",
		             dsthost, dstport, srchost, srcport) < 0) {
			free(ctx->u.file.header_req);
			goto errout;
		}
	}

	/* submit an open event */
	if (logger_open(content_log, ctx) == -1)
		goto errout;
	ctx->open = 1;
	return 0;
errout:
	free(ctx);
	*pctx = NULL;
	return -1;
}
Ejemplo n.º 14
0
int main(int argc, char *argv[])
{
	int   ch, num = 10;
	char* addr = strdup("127.0.0.1:19999");
	void (*func)(const char* addr, int num, bool enable_cache) = NULL;
	bool use_mysql = false, enable_cache = false;

	while ((ch = getopt(argc, argv, "hs:aqgQuUn:mdc")) > 0)
	{
		switch (ch)
		{
		case 'h':
			usage(argv[0]);
			return (0);
		case 's':
			free(addr);
			addr = strdup(optarg);
			break;
		case 'a':
			func = hs_insert;
			break;
		case 'q':
			func = hs_find;
			break;
		case 'g':
			func = hs_find2;
			break;
		case 'Q':
			func = hspool_find;
			break;
		case 'u':
			func = hs_update;
			break;
		case 'U':
			func = hspool_update;
			break;
		case 'n':
			num = atoi(optarg);
			break;
		case 'm':
			use_mysql = true;
			break;
		case 'd':
			debug_on = true;
			break;
		case 'c':
			enable_cache = true;
			break;
		default:
			break;
		}
	}

	if (use_mysql)
	{
		printf("mysql\n");
		my_find(addr, num);
		return (0);
	}

	logger_open("test.log", "test", "all:2");

	if (func != NULL)
		func(addr, num, enable_cache);
	else
		usage(argv[0]);

	free(addr);
	return (0);
}