日志和时间函数设计
来源:互联网 发布:矩阵中diag什么意思 编辑:程序博客网 时间:2024/05/17 21:41
日志函数的需求:
a)输出错误日志,每天一个错误日志文件;
b)使用一些标准宏,准确定位错误位置和发生错误时间;
c)使用有格式的输出.
时间函数需求:
a)秒级second: time(NULL)
b)毫秒级ms: GetTickCount (win32 api,返回当前时间的毫秒级,1tick=55us),常用于费时程序的统计,压缩一个文件.
c)微秒级us: gettimeofday返回的是一个时间结构struct tm
d)clock: 用来计算当前函数cpu调用的时间,如果是main函数里,则是整个程序的cpu调用时间了。clock/CLOCKS_PER_SEC那么返回的将是秒,否则返回微秒时间。
示例
1 LOG
int LOG(const char* lpszFormat,...)
{
time_t now;
struct tm *local;
FILE* pLogFile;
char fileName[MAX_DEPTH];
time(&now);
local = localtime(&now);
//format file name
#ifdef ERROR
sprintf(fileName,"%d-%02d-%02d.log",local->tm_year + 1900,/
local->tm_mon + 1,local->tm_mday);
#else
sprintf(fileName, "%s", "test.log");
#endif
if (!(pLogFile = fopen(fileName,"a+"))) {
return -1;
}
//record error time
char strMsg[512];
int strMsglen;
//strMsglen = sprintf(strMsg,"%02d:%02d:%02d ",local->tm_hour,local->tm_min,local->tm_sec);
strMsglen = strftime(strMsg,sizeof(strMsg),"%H:%M:%S",local);
va_list args;
va_start(args,lpszFormat);
fprintf(pLogFile,"[%s]",strMsg);
vfprintf(pLogFile,lpszFormat,args);
fprintf(pLogFile,"/n");
fflush(pLogFile);
va_end(args);
fclose(pLogFile);
return 0;
}
2 获取到当前时间的毫秒级,微秒级
//us指的微秒,microSecond, ms指的是毫秒,millonSecond
unsigned long long getUS();
unsigned long getMS();
unsigned long long getUS()
{
struct timeval l_tv;
gettimeofday(&l_tv,NULL);
unsigned long long l_ret = 0;
l_ret = (l_tv.tv_sec&0xFFFFFFFF)*1000000;
l_ret += l_tv.tv_usec;
return l_ret;
}
unsigned long getMS()
{
struct timeval l_tv;
gettimeofday(&l_tv,NULL);
unsigned long l_ret = 0;
l_ret = (l_tv.tv_sec&0xFFFFFFFF)*1000;
l_ret += (l_tv.tv_usec/1000);
return l_ret;
}
3 clock --cpu time used
#include <stdio.h>
#include <time.h>
void elapsed_time(void);
void elapsed_time(void)
{
long i, sum=0;
for( i=0; i<1600000000ll; i++) sum+=i-299;
printf("elapse time: %lu secs./n", clock()/CLOCKS_PER_SEC);
}
int main()
{
elapsed_time();
unsigned long long starts=clock();
elapsed_time();
printf("main time: %lu secs./n", clock()-starts );
return 0;
}
- 日志和时间函数设计
- kernel日志时间转换函数
- 时间同步和日志同步~
- Flex4之打印日志,比如某函数的开始和结束时间,用ms计算
- 日期和时间函数
- 时间和日期函数
- 日期和时间函数
- 时间和日期函数
- 函数:日期和时间函数
- C 取时间和写日志
- 基于行和时间的日志打印
- PHP 错误 和 日志 函数
- IIS 日志记录时间和实际时间 不一样
- Docker Java应用日志时间和容器时间不一致
- Oralce时间运算和日期时间函数
- C#时间函数和时间格式
- time_t的局限性及时间函数设计
- Mysql日期和时间函数
- Asp.net2.0页面执行顺序
- 给Ajax请求加上".do"
- 浅析Asp.net中的Web.config文件(转载)
- IT从业人员必看的10个论坛
- 周末出动:广州石室圣心天主教堂
- 日志和时间函数设计
- 有效编写软件的75条建议
- C语言测试:想成为嵌入式程序员应知道的0x10个基本问题
- VC调用存储过程的通用方法(SQLServer篇)
- The First Day In ITS
- asp调用orcle存储过程(过程中含有输出参数)
- 多按钮切换页面
- 软件测试管理--目录
- 软件测试管理--前言