有很多解释如何清空日志文件。清除C#中锁定的日志文件的内容
像:
File.WriteAllText(activeTab.FileName, string.Empty);
但是这个例子和其他的例子,我发现所有有同样的问题。如果日志文件当前被另一个进程锁定,则它不起作用。
在ruby中有一个任务我可以使用不删除,只是清空日志文件。
我发现我也可以用Powershell使用clc <filename>
。 来源可现在这里:
但老实说,我不明白这个代码是如何工作的,也从其他类继承。
是否有可用于任何常用程序/类的C#实现?
总之,如果一个文件被锁定你(*您=任何其他进程/线程*)不能删除或修改(“空”)它。有很多第三方日志库,我会推荐任何一天试图推出自己的。然后使用一个库将确保你不必担心这样的事情,因为这些库中的一些已经存在了,只要我记得,并且非常强大和可配置。我个人最喜欢的是[Log4Net](https://logging.apache.org/log4net/),但[NLog](http://nlog-project.org/)也很受欢迎。 – Igor
IMO,这不是一个合理/安全的事情。你应该弄清楚如何让任何人拿着文件锁释放它。 – jlew
您不能破坏另一个进程的文件锁定。你所能做的就是将数据排队到某个地方,并且继续检查要释放的锁,然后完成你的动作(编辑/删除/清除)。 –