如何写入网站上的日志文件
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 时,您将受到限制。
您有两个选择:
- 说服人们让您关闭 IIS 中的功能并在您的服务器中打开一个安全漏洞
- 改为登录数据库
- 创建写入日志文件的 WCF 服务并将其设置为不使用 IIS
还有其他选项,但这是最简单的三个选项。最简单的是数字 1,因为它是 IIS 中的设置。我也不推荐这个解决方案。
我记录操作以证明特定任务已由特定用户执行。写入日志文件在开发 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 时,您将受到限制。
您有两个选择:
- 说服人们让您关闭 IIS 中的功能并在您的服务器中打开一个安全漏洞
- 改为登录数据库
- 创建写入日志文件的 WCF 服务并将其设置为不使用 IIS
还有其他选项,但这是最简单的三个选项。最简单的是数字 1,因为它是 IIS 中的设置。我也不推荐这个解决方案。