关于只读设置的 IIS 日志记录最佳实践

IIS logging best practice in regards to Read Only setting

如果我有一个 asp.net webAPI,我在其中进行自己的自定义日志记录,是否有关于将这些日志放在哪里的最佳实践?

最初我试图登录到 ${basedir}/logs/${shortdate}.log。但是我的 basedir 是我项目的旧名称,我不知道这个值是从哪里来的,也不知道如何更改它?

但是接下来我注意到的是日志文件夹似乎是只读的,IIS 默认登录到的文件夹。我似乎无法改变这一点。我在想,当 IIS 运行它时,默认情况下它只读,这样在恶意攻击期间没有人可以删除日志。

所以我决定登录到另一个目录以避免这个问题。这是最佳实践还是应该尝试我正在使用 Nlog 的不同方法(如果相关)?

我不知道我是否称其为最佳实践,但根据我的经验,在本地记录文件并不能很好地扩展到生产环境:

  • 如果您在多个 Web 服务器之间进行负载平衡,那么您必须尝试将来自多个来源的日志文件放在一起并关联事件
  • 您必须登录到生产箱才能首先尝试检索您的日志,这意味着没有完全生产访问权限的人无法从日志中诊断问题。

备选方案包括记录到中央数据库或(我现在的首选选项)记录到日志服务器,例如 seq. You can log to seq using NLog by following their NLog documentation page

如果您确实想使用光盘上的文件,那么我建议在应用程序根目录的 "logs" 子文件夹中放置一组滚动日志文件。