我们有一组 Web 服务,这也是我们的内部 API。它们完美地共享一个通用的 web.config 文件。
有没有办法让 log4net 为整个站点创建一个日志,为所有站点创建一个日志?并有共同的错误处理程序?我认为他们都是独立的虚拟目录,独立的应用程序......的问题?
但是同样...他们共享相同的 web.config 文件并且工作正常...他们可以以某种方式共享 global.asax 或其他什么吗?不能让它工作...
谢谢你的帮助。
我们有一组 Web 服务,这也是我们的内部 API。它们完美地共享一个通用的 web.config 文件。
有没有办法让 log4net 为整个站点创建一个日志,为所有站点创建一个日志?并有共同的错误处理程序?我认为他们都是独立的虚拟目录,独立的应用程序......的问题?
但是同样...他们共享相同的 web.config 文件并且工作正常...他们可以以某种方式共享 global.asax 或其他什么吗?不能让它工作...
谢谢你的帮助。
从 log4net 的常见问题解答:
如何让多个进程登录到同一个文件?
默认情况下,FileAppender 在记录时对日志文件持有独占写入锁。这可以防止其他进程写入文件。FileAppender 可以配置为使用不同的锁定模型 MinimalLock,它仅在写入日志时获取写入锁。这允许多个进程交错写入同一个文件,尽管会降低性能。有关 MinimalLock 配置的示例,请参阅 FileAppender 配置示例。
虽然 MinimalLock 模型可用于交叉写入单个文件,但它可能不是最佳解决方案,尤其是在从多台机器进行日志记录时。或者,您可能有一个或多个进程记录到 RemotingAppenders。使用 RemoteLoggingServerPlugin(或 IRemoteLoggingSink),进程可以接收所有事件并将它们记录到单个日志文件中。
如果没有额外的配置,log4net 会对文件设置一个排他锁。使用他们的 MinimalLock 设置,您可以“希望”获得共享日志记录。换句话说,您的里程可能会有所不同。
作为建议的替代策略,由于您有一个带有 Web 服务的内部 API,请考虑一种 Web 服务方法,该方法在后台实现单个私有静态记录器并将条目添加到日志中。您可以从要实现日志记录的其他 Web 方法调用日志记录 Web 方法(如果性能很关键,则异步调用)。
他们都在同一个项目中吗?他们是 ASMX 服务吗?如果是这样,您可以将它们放在同一个虚拟目录中,应该没有问题。