可变参数 用法 va_list

本文介绍了一个使用C++实现的错误日志记录函数及其相关辅助函数。这些函数能够帮助开发者有效地记录运行时错误信息到指定的日志文件中,并且能够自定义日志输出的详细程度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.kuqin.com/article/23candcplusplus/31837.html
int ErrLog(char *fmt, ...)
{
    FILE *fp;
    char logfile[255];
    va_list args;

    va_start(args, fmt);

    sprintf(logfile, "%s/log/%s.err.%s.log", getenv("HOME"), srv_name, GetSysDate(0));
    fp = fopen(logfile, "a+");
    if (fp == NULL) {
        fprintf(stderr, "open run log file[%s]error: %s\n", logfile, strerror(errno));
        return -1;
    }
    fprintf(fp, "[%s %s][%ld:%ld][%s][%s]\n", GetSysDate(1), GetSysTime(), getpgrp(), getpid(), bank_name, strerror(errno));

    vfprintf(fp, fmt, args);
    fclose(fp);
    va_end(args);

    return 0;
}
int printv(char *fmt, ...)
{
    va_list args;

    if (verbose == 0)
        return 0;

    va_start(args, fmt);
    vfprintf(stderr, fmt, args);
    va_end(args);

    return 0;
}


int printv( char *psMsg, int iSqlcode, char *psFile, long lLine )
{
        FILE *fp_log;
        char sFile[255];
        char sDate[9],sTime[7];

        sprintf(sFile,"%s/log/err.log",getenv("HOME"));
        if((fp_log=fopen(sFile,"a"))!=NULL)
        {
                acc_getrqsj(sDate,sTime);
                fprintf(fp_log,"时间:%s%s|文件:%s|行数:%d|%s|数据库错码:%d|\n",\
                        sDate+4,sTime,psFile,lLine,psMsg,iSqlcode);
        }
        fclose(fp_log);
        return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值