在运行期间删除日志文件, log4j 还能自动生成文件么?

2021-03-01 17:32:59 +08:00
 luxinfl

不能重启。是不是要搞个定时任务检测文件是否存在? 另外要吐槽下测试,可靠性测试为什么会有这种测试场景??

2385 次点击
所在节点    程序员
17 条回复
liprais
2021-03-01 17:34:36 +08:00
不能
dorothyREN
2021-03-01 17:37:17 +08:00
你可以删除以后在创建一个文件
sdrzlyz
2021-03-01 17:46:36 +08:00
@dorothyREN ...不管用吧?新旧文件的 fd 不一样
Vegetable
2021-03-01 17:50:09 +08:00
程序没有检测机制的情况下,会一直向之前的 fd 写入内容。所以程序不停,删除日志文件无法释放空间,必须 truncate 才能释放空间。

这是 linux 的机制,windows...删不掉
llussy
2021-03-01 17:57:37 +08:00
cat /dev/null > filename 我清空 nginx 或 tomcat 日志时就这么搞,空间释放了,还会有新日志进去。
fondD
2021-03-01 17:59:46 +08:00
我喜欢用 echo '' > xx.log
keepeye
2021-03-01 18:02:22 +08:00
吐槽下测试要不要测以下 rm -rf / 看看程序是否可靠?
egzosn
2021-03-01 18:02:50 +08:00
不可以的
boris93
2021-03-01 18:04:30 +08:00
我记得 kill 有个信号能通知应用重新打开文件,当然最好是不要删,用 logrotate 之类的定期翻转日志,或者接入个日志管理工具比如 ELK
pkookp8
2021-03-01 18:05:35 +08:00
我见过三家公司的日志模块
每次都打开一个 fd 写入关闭
不是很理解,打开文件不耗性能吗
CallMeReznov
2021-03-01 18:06:20 +08:00
这个...日志分割不就是为了应对这种情况的嘛???
Solace202
2021-03-01 18:06:21 +08:00
true > xx.log
chenqh
2021-03-01 18:06:52 +08:00
要不直接写到 stdout, 用 supervisor 或者 systemd 来切割日志?
luxinfl
2021-03-01 19:05:03 +08:00
@Vegetable 这意思是不是即使新建了个同名文件,也不行? linux 不是很懂。
luxinfl
2021-03-01 19:05:28 +08:00
@CallMeReznov 日志分割不是有固定大小设置麽,说实话不是很懂
dorothyREN
2021-03-01 19:24:46 +08:00
@sdrzlyz #3 有的程序可以,有的程序不可以
msg7086
2021-03-02 03:11:21 +08:00
@luxinfl #14 打开的文件就一直存在的,文件被删除不影响使用。
Linux 下的一些临时文件的实现,就是打开文件后马上删除,这样程序退出的时候临时文件就会自动释放了。

删除日志文件后自动重新生成这个属于新增功能,要实现的话让他们提需求去。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/757363

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX