循环文件记录

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

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

如果有人这样做了 请让我知道。

谢谢

这是一个例子

这是一个减少版本。 我们在调用log_it之前使用vargs并格式化它们。


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

我希望有所帮助。

戴夫

你真的确定要循环伐木吗? 我认为滚动日志会更好。

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

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

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