Windows Azure 上的 ASP.NET 应用程序。该应用程序具有可扩展性,可在 1..N 个 Web 角色实例上运行。
我们将 log4net 写入 Windows 事件日志,并将 Windows Azure 诊断整合到 Azure 存储。
目前 log4net 配置存储在 Web.config 中。
对于应用程序日志记录,我们有以下要求:
能够指定要写入日志的一种或多种类型的日志条目的列表
能够指定将日志条目写入日志的级别(每个日志条目)
记录器命名约定满足第一个要求。记录器定义了一个层次结构,并让程序员在运行时控制打印或不打印哪些语句。
ILog log = LogManager.GetLogger("Davanti.WMS.Core.Logic.Inventory");
第二个要求可以通过使用日志级别 DEBUG、INFO、WARN、ERROR 和 FATAL 来实现。
log.Debug("Process has completed");
现在的情况
我们在重定向到 Windows 事件日志的 Web.config 文件中只有一个 log4net 配置。并根据存储在中央数据库中的设置控制应用程序代码中记录的内容(参见要求 1)和记录的深度(级别)(参见要求2)。
这种方法将对应用程序性能产生负面影响,因为应用程序本身必须检查是否需要(同步)记录某些消息,而不是在记录框架上(异步)。
所需情况
我们想从 log4net 设置中控制要记录的内容和记录级别。问题是我们必须在所有Windows Azure Web 角色实例上应用 log4net 设置。最好的方法是什么?
此外,我们希望有一种更加用户友好的方式来启用日志记录(例如通过顾问)。有哪些可能性?
例如使用企业库配置编辑器。配置设置的可视化表示。 http://img651.imageshack.us/img651/930/logging.jpg