【问题标题】:one log4net log file for many applications许多应用程序的一个 log4net 日志文件
【发布时间】:2014-11-26 00:01:19
【问题描述】:

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

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

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

【问题讨论】:

    标签: vb.net log4net


    【解决方案1】:

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

    • ExclusiveLock:以独占方式锁定文件,仅用于一个进程
    • MinimalLock:在尽可能短的时间内锁定文件,从而可以在记录期间更改/删除文件
    • InterProcessLock:允许进程间同步

    所以绝对有可能让多个进程写入同一个文件而不会丢失信息。但是,正如 COLD TOLD 所说和 log4net 文档所建议的那样:

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

    【讨论】:

    • 是的。我只想补充一点,当您从不同的 AppDomain(在同一进程中)登录时,您会遇到同样的问题。
    • @Christian.K:好点。我没有考虑过不同的 AppDomain,因为我没有太多使用它们。我通常会尝试使用转发附加程序 - 当我这样做时,它可以缓冲并可能有助于缓解问题。您有跨域登录的经验吗?缓冲可以与锁定机制一起提供帮助吗?
    【解决方案2】:

    是的,这是最好的方法,除非您只运行一个应用程序并期望另一个应用程序不运行,而一个应用程序正在使用另一个应用程序可能不会写入的文件,因此您需要按顺序使用线程池为了控制访问每个日志的应用程序或创建单独的日志文件,我个人会在这种情况下使用数据库。

    【讨论】:

    • 谢谢。拥有一个日志文件有任何风险吗?唯一的问题是一次只能写一个应用程序。
    • 风险是丢失一些日志
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多