예제 #1
0
void app_log_file(char *fmt, ...)
{
    va_list args;
    VMINT drv, hdl;
    VMUINT written;
    VMINT ret;
    vm_time_t time = {0};
    char buf[LOG_BUF_SIZE] = {0};
    VMWCHAR wpath[FILE_PATH_SIZE] = {0};
    VMCHAR path[FILE_PATH_SIZE] = {0};
  
    buf[LOG_BUF_SIZE - 2] = '\r';
    buf[LOG_BUF_SIZE - 1] = '\n';

    va_start( args, fmt );
    vm_get_time(&time);
    vm_sprintf(buf+strlen(buf), "[%02d:%02d:%02d]", time.hour, time.min, time.sec);
    vm_vsprintf(buf+strlen(buf), fmt, args);
        
    drv = vm_get_removable_driver() > 0 ? vm_get_removeable_driver() : vm_get_system_driver();
    vm_sprintf(path, "%c:\\%s", drv, BT_NAME".log");

    vm_gb2312_to_ucs2(wpath, sizeof(wpath), path); 
    hdl = vm_file_open(wpath, MODE_APPEND, 0);
    if (hdl < 0)
        hdl = vm_file_open(wpath, MODE_CREATE_ALWAYS_WRITE, 0);
    else
    {
        if (!flag_delete_log)
        {
            vm_file_close(hdl);
            vm_file_delete(wpath);
            flag_delete_log = 1;
            hdl = vm_file_open(wpath, MODE_CREATE_ALWAYS_WRITE, 0);
        }
    }
    
    vm_file_write(hdl, buf, LOG_BUF_SIZE, &written);
    vm_file_close(hdl);

    va_end( args );						
}
예제 #2
0
void log_it(VMINT level, char* fmt, va_list ap) 
{
	vm_time_t tm;
	VM_P_HANDLE phandle;
	char text[MAX_APP_NAME_LEN], level_text[10] = {0};
	VMUINT written;

	memset(text, 0x00, sizeof(text));
	memset(level_text, 0x00, sizeof(level_text));
	
	switch(level)
	{
	case VM_DEBUG_LEVEL:
		strcpy(level_text, "DEBUG");
		break;
	case VM_INFO_LEVEL:
		strcpy(level_text, "INFO");
		break;
	case VM_WARN_LEVEL:
		strcpy(level_text, "WARN");
		break;
	case VM_ERROR_LEVEL:
		strcpy(level_text, "ERROR");
		break;
	default:
		strcpy(level_text, "FATAL");
		break;
	};
	
	vm_get_time(&tm);
	phandle = vm_pmng_get_current_handle_ignore_status();
	sprintf(text, "%d-%02.2d-%02.2d %02.2d:%02.2d:%02.2d [%s][PID:%d][%s:%d]- ", tm.year, tm.mon, tm.day, tm.hour,
		tm.min, tm.sec, level_text, phandle, _modFile, _lineNo);

	//vsprintf(text + strlen(text), fmt, ap);

#ifdef __MTK_TARGET__
		vsnprintf(text + strlen(text), 150, fmt, ap);
#else 
		_vsnprintf(text + strlen(text), 150, fmt, ap);
#endif 

	strcat(text, "\n\0");
	
    MMI_PRINT(MOD_MRE, TRACE_INFO,"%s", text);

	if(log_init && def_log_mtk == 1)
	{
		if (FS_Write(log_file, text, (VMUINT)strlen(text), &written) < 0)
		{
			FS_Close(log_file);
			log_init = 0;
			return;
		}
		if (FS_Commit(log_file) < 0)
		{
			FS_Close(log_file);
			log_init = 0;
			return;
		}
	}
	
}
예제 #3
0
int LDateTimeClass::getTime(datetimeInfo *time)
{
	return vm_get_time((vm_time_t *)time);//return value:-1:failed, time is null;  0:success
}