首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环文件日志记录

循环文件日志记录
EN

Stack Overflow用户
提问于 2009-03-04 09:26:41
回答 3查看 6.5K关注 0票数 4

我想知道有没有C语言的记录器库,可以做循环文件记录?

我目前正在研究log4C,但找不到足够多的文档来说明它会做循环日志记录。

如果有人这么做过的话。请让我知道。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2009-03-04 10:25:04

下面是一个例子

这是一个精简的版本。在我们的代码中,我们使用varg,并在调用log_it之前对它们进行格式化。

代码语言:javascript
复制
typedef const char* c_str;
FILE* log_fp = 0;
const int max_log_size = 4 * 1024 * 1024;
const int max_no = 5;
c_str prefix = "logs_";
c_str postfix = ".txt";

void log_it( c_str str )
    {
    char file1[100], file2[100];

    if( ! log_fp )
        {
        sprintf( file1 "%s%d%s", prefix, 0, postfix );
        log_fp = fopen( file1, "a" );
        }

    if( log_fp )
        {
        if( ftell( log_fp ) > max_log_size )
            {
            fclose( log_fp );
            log_fp = 0;

            for( int i = (max_no - 1); i >= 0; i-- )
                {
                sprintf( file1 "%s%d%s", prefix, i, postfix );
                sprintf( file1 "%s%d%s", prefix, i+1, postfix );
                rename( file1, file2 );
                }

            sprintf( file1 "%s%d%s", prefix, 0, postfix );
            log_fp = fopen( file1, "a" );
            }

        fputs( str, log_fp );
        fflush( log_fp );
        }
    }

我希望这能有所帮助。

戴夫

票数 2
EN

Stack Overflow用户

发布于 2009-03-04 09:45:22

你真的想要循环日志吗?我认为使用滚动日志会更好。

循环记录:记录到log.1,然后log.2,log.3,log.4,然后返回log.1

滚动日志:有四个日志文件,其中log.1总是最新的,log.2、3、4是较旧的日志条目吗?

票数 1
EN

Stack Overflow用户

发布于 2009-03-04 09:33:47

在这一点上,Log4C似乎没有被很好地记录下来。他们确实指向了Log4J页面,其中提到了“滚动”日志,这可能是您想要的?这可能只是一个术语混淆的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/609840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档