循环文件记录 [英] Circular file logging

查看:77
本文介绍了循环文件记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否有用于C的记录器库,可以进行循环文件记录?

I would like to know if there are any logger libraries for C , that can do circular file logging?

我目前正在查看log4C,但是找不到足够的文档可以说它将进行循环日志记录.

I am currently looking at log4C, But cant find enough docs on it that can say it will do circular logging.

(如果有人这样做).请告诉我.

if anyone has done this. kindly let me know.

谢谢

推荐答案

这是一个示例

这是精简版.在我们的代码中,我们使用vargs并在调用log_it之前对其进行格式化.

This is a cut down version. In ours we use vargs and format them before calling log_it.

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 );
        }
    }


我希望能帮上忙.


I hope that helps.

戴夫

这篇关于循环文件记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆