我应该将 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