如何写入网站上的日志文件

How to write to a log file on the website

我记录操作以证明特定任务已由特定用户执行。写入日志文件在开发 space 中有效(在我的 PC 上写入 C:\CPLogfile\),但是一旦我发布解决方案,我就会收到以下错误:

Server Error in '/' Application

我的代码:

Public Sub LogAction(WhoIsThis As String, MessageToLog As String)

    Dim ThisPath As String = HttpContext.Current.Request.Url.Host
    Dim LogfileName As String = "logAction" & Format(Now(), "yyyyMMdd") & ".txt"
    If InStr(ThisPath, "localhost") > 0 Then '----- Local machine
        LogfileName = "C:\CPLogfile\" & LogfileName
        If Not Directory.Exists("C:\CPLogfile") Then
            Directory.CreateDirectory("C:\CPLogfile\")
        End If
    Else
        LogfileName = ThisPath & "logAction" & Format(Now(), "yyyyMMdd") & ".txt"
    End If
    Using w As StreamWriter = File.AppendText(LogfileName)
        w.Write("{0} {1}", DateTime.Now.ToLongTimeString(), DateTime.Now.ToLongDateString())
        w.WriteLine(", User: " & WhoIsThis)
        w.WriteLine("  :{0}", MessageToLog)
        w.WriteLine("-------------------------------")
    End Using
End Sub

默认情况下不能在 IIS 目录之外工作的主要原因是安全问题。它可以阻止横向攻击之类的事情。您可以在开发机器上运行的原因很可能是您没有使用完整的 IIS 产品。当您移动到 ​​IIS 时,您将受到限制。

您有两个选择:

  1. 说服人们让您关闭 IIS 中的功能并在您的服务器中打开一个安全漏洞
  2. 改为登录数据库
  3. 创建写入日志文件的 WCF 服务并将其设置为不使用 IIS

还有其他选项,但这是最简单的三个选项。最简单的是数字 1,因为它是 IIS 中的设置。我也不推荐这个解决方案。