我应该把我的日志文件放在一个asp.net应用程序中?

我应该把我的日志文件放在一个asp.net应用程序中?

问题描述:

我有一个ASP.NET应用程序,我们已经编写了我们自己的日志记录模块。我应该把我的日志文件放在一个asp.net应用程序中?

我的问题是,哪里是写日志文件的标准位置?即该网站将以匿名用户身份(例如IIS7上的IUSR)运行,我需要一个我知道它有权写入的地方。

干杯,

项目根目录上的App_Data文件夹。它不适用于网络请求;所以其他人不能窥探它。

我会建议把日志文件放到一个单独的磁盘上,虽然应该给你一点性能上的提升,这样你就不会试图对网站同样的磁盘进行读写操作。如果您不能将日志文件放在单独的磁盘上,那么我会简单地选择一个您选择的文件夹。

在任何情况下,您都必须将“网络服务”帐户的“修改”权限授予所需的文件夹。

另一方面,如果您有权访问数据库,请在那里记录信息。这将比访问硬盘驱动器快得多,并且不会公开提供。你也可以很容易地从数据报告。

我无法修改文件夹的权限(特别是虚拟目录主文件夹外),并且还没有App_Data文件夹,所以我有点犹豫。

因此,目前我正在使用CommonApplicationData文件夹。

  • 在Vista/Server 2008中,这是C:\ ProgramData \
  • 在XP/Server 2003中,这是C:\ Documents和Settings \所有用户\应用数据\

我我无法修改文件夹的权限(尤其是在虚拟目录主文件夹之外),并且还没有App_Data文件夹,所以我有点犹豫。

如果你有一个网站,你显然有一个文件夹的地方。你不能添加(非面向Web的)子文件夹吗?看起来这将是一个更适合放置日志的地方,而不是将它们转储到全局共享文件夹中。

您也可以登录到Windows事件日志或数据库中的表。人们多久看一次事件日志?如果正在以正式方式进行审查,写入表格会使报告返回起来容易得多,因为颠倒顺序并且仅显示当前时间段的最后X个事件是微不足道的。 Windows事件日志还可以通过PowerShellLogParser查询Windows事件日志。

+0

或Log Parser Lizard,这是LogParser的一个很好的补充,它支持几乎所有文件系统的类似sql的语法。 – jhexp 2011-06-09 10:19:21

推app_data是最好的主意,只要记住,当发布项目时,如果勾选了“在发布之前删除所有现有文件”选项,那么文件夹中的当前数据将会消失。解决方法是跳过删除app_data文件夹。

做日志记录的另一个选择是使用一些现有的框架,如Log4net。