Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
Vb.net 一个适用于多个应用程序的log4net日志文件_Vb.net_Log4net - Fatal编程技术网

Vb.net 一个适用于多个应用程序的log4net日志文件

Vb.net 一个适用于多个应用程序的log4net日志文件,vb.net,log4net,Vb.net,Log4net,我有两个计划任务,它们写入同一个log4net日志文件 当一个任务正在运行时,它会成功地写入日志文件。然而,当两者都在运行时;第一个启动将写入日志文件,第二个启动将不写入 每个应用程序都必须有一个日志文件吗?我已经阅读了文档,但找不到答案。是的,除非你只运行一个应用程序,而期望另一个应用程序不运行,当一个应用程序正在使用该文件时,另一个应用程序可能不会写入该文件,因此您需要使用线程池来控制访问每个日志的应用程序,或者创建一个单独的日志文件。在这种情况下,我个人将使用数据库 如果您真的想从两个进程

我有两个计划任务,它们写入同一个log4net日志文件

当一个任务正在运行时,它会成功地写入日志文件。然而,当两者都在运行时;第一个启动将写入日志文件,第二个启动将不写入


每个应用程序都必须有一个日志文件吗?我已经阅读了文档,但找不到答案。

是的,除非你只运行一个应用程序,而期望另一个应用程序不运行,当一个应用程序正在使用该文件时,另一个应用程序可能不会写入该文件,因此您需要使用线程池来控制访问每个日志的应用程序,或者创建一个单独的日志文件。在这种情况下,我个人将使用数据库

如果您真的想从两个进程写入同一个文件,可以使用比默认值更高的值来允许这样做。以下是log4net中的现有模型:

  • :仅针对一个进程以独占方式锁定文件
  • :在尽可能短的时间内锁定文件,以便在日志记录期间更改/删除文件
  • :允许进程之间的同步
因此,让多个进程写入同一个文件而不丢失信息是绝对可能的。然而,正如COLD所说,以及log4net文档所建议的:

所有锁定策略都有问题,你应该认真考虑。 使用不同的策略,避免有多个流程 登录到同一文件


谢谢是否存在使用单个日志文件的风险?唯一的问题是,一次只能有一个应用程序可以写。风险在于失去一些日志。我只想补充一点,当你从不同的AppDomain(在同一个过程中)登录时,你会遇到同样的问题。@Christian.K:说得好。我没有考虑不同的应用程序域,因为我没有太多地使用它们。我通常会尝试使用一个转发附加器,它可以缓冲和帮助缓解问题。你有跨域登录的经验吗?缓冲是否有助于锁定机构?