
# 使用ICAgent采集日志时，推荐的日志轮转方案是什么？
**日志轮转** 也叫日志切割或日志绕接，通俗来讲**是对日志文件的大小进行控制**。 软件系统通常会长时间的不停机运行，这样会产生很多信息记录到不同的日志中。随着时间的推移，日志的容量自然会越来越大，而硬盘的空间是有限的，就需要对日志文件的大小进行控制。
常用的日志轮转方式有两种：按时间轮转和按日志大小轮转。
- **按时间轮转：**在进行轮转日志时，以时间为标准，当日志出现的时间满足设定的时间阈值时，则进行日志轮转。类似的典型用法有：/var/log/messages 日志即按每7天轮转一次的规则进行日志切分。
- **按日志大小轮转：**在进行轮转日志时，以日志大小为标准，当日志的大小满足设定的大小时，则进行日志轮转。一般应用程序的日志多使用日志大小进行轮转。
在使用日志轮转时，有以下建议：
- **如何轮转日志** ：
  ICAgent不会对您的日志轮转，建议在应用程序中，使用成熟的软件包自定义日志轮转规则。例如：Java的logback、log4j2、Python的logging、Linux系统的logrotate。典型配置日志文件超过100/50/20MB轮转一次，保存10-20个历史日志文件。
  
- **轮转后日志文件命名建议** ：
  最佳实践建议：假设您的日志文件路径是/your/log/path/\*\*/*\** .log，建议您轮转后的文件命名为：/your/log/path/\*\*/*\**.xxx.log。此处的xxx按照用户习惯，一般是指日期，如20240103，但不能含字母。
  自定义轮转规则：如果您的日志文件轮转后命名规则不符合上述的最佳实践建议，可能导致轮转文件被重复采集，您可以通过自定义轮转规则来规避此问题。您可以为每条日志采集路径添加自定义轮转规则，基于正则表达式匹配轮转后的文件名，匹配成功的文件名会被识别为日志轮转文件，不会被重复采集。例如您的日志文件为/your/log/path/\*\*/app1.log，轮转后的文件为/your/log/path/\*\*/app1.20240103.biz.log，那么可以配置自定义轮转规则为{basename}\\.\[0-9-\\.\]+\\.\[0-9\]+\\.biz\\.log。
  
 
