我应该将 asp.net 应用程序的日志文件放在哪里?

Posted

技术标签:

【中文标题】我应该将 asp.net 应用程序的日志文件放在哪里?【英文标题】:Where should I put my log file for an asp.net application? 【发布时间】:2010-09-05 14:41:51 【问题描述】:

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

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

干杯,

【问题讨论】:

【参考方案1】:

项目根目录下的 App_Data 文件夹。它不适用于 Web 请求;所以其他人无法窥探。

【讨论】:

【参考方案2】:

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

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

另一方面,如果您可以访问数据库,则在其中记录信息。这将比访问硬盘驱动器快得多,并且不会公开提供。您还可以非常轻松地从数据中生成报告。

【讨论】:

【参考方案3】:

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

所以目前我将使用 CommonApplicationData 文件夹。

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

【讨论】:

【参考方案4】:

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

如果你有一个网站,你显然在某个地方有一个文件夹。您不能添加(非面向网络的)子文件夹吗?与将日志转储到全局共享文件夹相比,这似乎是放置日志更合适的位置。

【讨论】:

【参考方案5】:

您还可以记录到 Windows 事件日志或数据库中的表。人们多久查看一次事件日志?如果定期检查它,写入表格会使报告更容易,因为颠倒顺序并仅显示当前时间段的最后 X 个事件是微不足道的。 Windows 事件日志您也可以通过PowerShell 或LogParser 查询Windows 事件日志。

【讨论】:

或与 Log Parser Lizard 一起使用,它是 LogParser 的一个很好的补充,几乎所有东西都支持类似 sql 的语法,包括文件系统。【参考方案6】:

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

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

【讨论】:

以上是关于我应该将 asp.net 应用程序的日志文件放在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在 MSAL.NET 中使用哪种类型的 ApplicationBuilder?我正在使用 ASP.NET Core Web Api

ASP.NET记录错误日志

qt加载第三方sdk的时候,应该将.dll放在哪

在 asp.net-mvc 中从服务器读取文本文件的最佳方法是啥

Asp.Net生命周期

在 ASP.NET MVC (C#) 上提供静态文件