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");
现状
我们在Web.config文件中只有一个log4net配置重定向到Windows事件日志。并根据存储在中央数据库中的设置,控制 以记录(请参阅要求1)和深度(级别)以在应用程序代码中记录(请参阅要求2)。 / p>
这种方法会对应用程序性能产生负面影响,因为应用程序本身必须检查某些消息是否需要(同步)记录在日志框架上(异步)。
所需情况
我们希望从log4net设置控制记录和记录级别的内容。问题是我们必须在所有 Windows Azure Web角色实例上应用log4net设置。对此最好的方法是什么?
此外,我们希望有一种更加用户友好的方式来启用日志记录(例如,由顾问)。有什么可能性?
例如使用Enterprise Library Configuration编辑器。 混淆设置的直观表示。 http://img651.imageshack.us/img651/930/logging.jpg
答案 0 :(得分:0)
默认配置提供程序将查看您的案例中的app.config或web.config。但是,您可以使用XmlConfigurator类从Stream
加载配置在角色配置中,您可以指定blob位置,然后使用Azure存储SDK中的Blob客户端对象,并从单个blob位置加载xml。
Log4Net配置:http://logging.apache.org/log4net/release/manual/configuration.html
这类似于使用xml blob的Azure诊断配置。
需要注意的是,如果要对日志记录进行实时更改,则需要执行更多实施,例如定期排队以更新文件。