我有一个 ASP.NET 应用程序,我们为其编写了自己的日志记录模块。

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

干杯,

有帮助吗?

解决方案

项目根目录下的 App_Data 文件夹。它不服务于网络请求;所以其他人无法窥探它。

其他提示

我建议将日志文件放在单独的磁盘上,不过应该会给您带来一点性能提升,这样您就不会尝试读取和写入与网站相同的磁盘。如果您无法将日志文件放在单独的磁盘上,那么我只需选择您选择的文件夹即可。

无论如何,您都必须授予“网络服务”帐户对所需文件夹的“修改”权限。

另一方面,如果您有权访问数据库,则将信息记录在那里。它比访问硬盘要快得多,并且不会公开。您还可以轻松地根据数据进行报告。

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

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

  • 在 Vista/Server 2008 上,这是 C:\ProgramData\
  • 在 XP/Server 2003 上,这是 C:\Documents and Settings\All Users\Application Data\

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

如果您有一个网站,那么您显然在某个地方有一个文件夹。您不能添加(非面向网络的)子文件夹吗?看起来这比将日志转储到全局共享文件夹中更适合放置日志。

您还可以记录到 Windows 事件日志或数据库中的表。人们多久查看一次事件日志?如果定期检查,写入表可以使报告更容易,因为颠倒顺序并仅显示当前时间段的最后 X 个事件很简单。Windows 事件日志 您还可以通过以下方式查询 Windows 事件日志 电源外壳 或与 日志解析器.

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top