Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl中的旋转日志文件_Perl_Logging_Fileparsing - Fatal编程技术网

perl中的旋转日志文件

perl中的旋转日志文件,perl,logging,fileparsing,Perl,Logging,Fileparsing,我已经实现了一个日志文件,它将在每分钟后存储一个进程的cpu和内存状态。我已经将该文件的最大大小限制为3MB(这对于我来说已经足够了) cron作业将在每分钟后调用该脚本,该脚本将记录该分钟的详细信息,并将该文件重命名为“log\uu.log” 当大小达到“3MB-100字节”时,我将重置文件指针以指向开头,并将覆盖日志文件中的第一个条目,现在将文件重命名为“log_u2;.log” 由于我每分钟都要重命名文件以更新文件指针位置,这是一种好的/有效的方法吗 我不想为此维护多个日志文件 我的另一个

我已经实现了一个日志文件,它将在每分钟后存储一个进程的cpu和内存状态。我已经将该文件的最大大小限制为3MB(这对于我来说已经足够了)

cron作业将在每分钟后调用该脚本,该脚本将记录该分钟的详细信息,并将该文件重命名为“log\uu.log”

当大小达到“3MB-100字节”时,我将重置文件指针以指向开头,并将覆盖日志文件中的第一个条目,现在将文件重命名为“log_u2;.log”

由于我每分钟都要重命名文件以更新文件指针位置,这是一种好的/有效的方法吗

我不想为此维护多个日志文件

我的另一个选择是保持文件指针在文件中的位置,但是…另一个文件!!如果此选项很好,则对维护不感兴趣:)


提前谢谢。

我不明白你为什么要重命名你的文件。这能实现什么

日志条目的大小是否固定?还是可变尺寸

如果条目大小固定,那么从一开始就可以重新写入现有文件:文件中永远不会有不完整的条目,如果要向文件写入计数器或时间戳,则应该清楚“光标”的位置

如果条目的大小是可变的,那么您可能不应该从一开始就重新写入文件,而不需要以某种方式明确“游标”在文件中的位置,并编写能够灵活读取截断日志条目的代码


你能重复使用现有的工具吗?

我不明白你为什么要重命名你的文件。这能实现什么

日志条目的大小是否固定?还是可变尺寸

如果条目大小固定,那么从一开始就可以重新写入现有文件:文件中永远不会有不完整的条目,如果要向文件写入计数器或时间戳,则应该清楚“光标”的位置

如果条目的大小是可变的,那么您可能不应该从一开始就重新写入文件,而不需要以某种方式明确“游标”在文件中的位置,并编写能够灵活读取截断日志条目的代码


您是否可以重复使用现有工具,例如?

您是工程师吗?这是一个很好的简单任务的例子,通过一个完美但过于复杂的解决方案来解决

除非您输入的内容与取出的内容占用的字节数完全相同,否则在文件中写入“in”实际上会导致写入位置后的整个后续部分被重写到磁盘追加要便宜得多

重命名文件以存储指针是可行的,但它不是很优雅,并且使内容更加复杂(首先,您的进程需要对文件所在目录的写入权限,否则只需对两个文件进行写入访问就足够了)

除非磁盘空间是一个问题(事实上很少是这样),否则您的方法的效率不如说,将所有内容附加到文件,并在文件达到最大大小时旋转文件。这样,您总是有最后3MB的日志可用,并且在当前文件中最多还有3MB。这将使解析文件变得更容易,而不是重新计算整个指针位置

更新以回答您的评论: 每分钟(甚至每秒钟)重命名一个文件不会显著降低系统的速度,不用担心


我们主要关心的是“为什么您认为需要重命名该文件”。这在技术上并不好,从逻辑的角度来看也不好,它让很多其他(未来)任务变得更加困难。您可以将文件指针存储在一个单独的文件中,或者存储在文件的末尾,还有更好的^H^H^H^H^H^H^H更简单的解决方案,根本不需要文件指针。

您是工程师吗?这是一个很好的简单任务的例子,通过一个完美但过于复杂的解决方案来解决

除非您输入的内容与取出的内容占用的字节数完全相同,否则在文件中写入“in”实际上会导致写入位置后的整个后续部分被重写到磁盘追加要便宜得多

重命名文件以存储指针是可行的,但它不是很优雅,并且使内容更加复杂(首先,您的进程需要对文件所在目录的写入权限,否则只需对两个文件进行写入访问就足够了)

除非磁盘空间是一个问题(事实上很少是这样),否则您的方法的效率不如说,将所有内容附加到文件,并在文件达到最大大小时旋转文件。这样,您总是有最后3MB的日志可用,并且在当前文件中最多还有3MB。这将使解析文件变得更容易,而不是重新计算整个指针位置

更新以回答您的评论: 每分钟(甚至每秒钟)重命名一个文件不会显著降低系统的速度,不用担心

我们主要关心的是“为什么您认为需要重命名该文件”。这在技术上并不好,从逻辑的角度来看也不好,它让很多其他(未来)任务变得更加困难。您可以将文件指针存储在单独的文件中,或者存储在文件的末尾,还有更好的^H^H^H^H^H^H^H^H更简单的解决方案,根本不需要文件指针。

1)我正在重命名文件以包含文件指针,以便在某个时候重置日志文件指针时,我可以知道下次在何处插入数据。2) 这些条目的大小将保持不变,最多我将失去最多1个旧条目。我可以接受这些条目。3)不,我不想为此目的使用该工具,我想