在 Java 中实现与以下兼容的文件编写器/记录器的最佳实践是什么对数旋转 http://linux.die.net/man/8/logrotate?目标是允许 logrotate 用于所有日志管理,而不是使用日志记录 API(Log4J 等)的内置轮换/管理。
我有兴趣听到除 Java 之外的其他开发平台的评论/答案。
您只需定期关闭并重新打开应用程序内的日志文件即可。您需要一个保留最后关闭时间的处理程序。如果(例如)自上次关闭以来已过去 20 秒并且即将写入日志条目,则处理程序应关闭并重新打开文件。它应该在写入日志条目之前进行这样的检查
如果不这样做,日志将被写入旧文件,即使它被 logrotate (!) 重命名(文件描述符保持不变),然后当日志被压缩和删除时,日志条目将消失(在这种情况下,java 将默默地删除此类日志)。
关闭并重新打开日志(使用文件名)将确保如果文件已重命名,则会创建一个新文件。每次写入日志时关闭并重新打开文件是一种矫枉过正的行为,因为打开文件是一项成本高昂的操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)