你会在哪里写一个错误日志文件,比如ErrorLog.txt
在Windows中?请记住,需要向基本用户开放文件写入权限的路径.
我知道事件日志是编写错误的可能位置,但它是否适用于"用户"级别权限?
编辑:我的目标是Windows 2003,但我提出的问题是,有一个"一般指南",用于编写错误日志的位置.
至于EventLog,我之前在ASP.NET应用程序中遇到过问题,我想要登录到Windows事件日志,但是我遇到了安全问题,让我感到心痛.(我不记得我遇到的问题,但记得有它们.)
您是否考虑过记录事件查看器?如果您想编写自己的日志,我建议用户本地应用程序设置目录.在那里制作产品目录.它在不同版本的Windows上有所不同.
在Vista上,你不能把这样的文件放在c:\ program files下.你会遇到很多问题.
在.NET中,您可以使用以下命令找到此文件夹:
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
事件日志也很简单易用:
http://msdn.microsoft.com/en-us/library/system.diagnostics.eventlog.aspx
文本文件非常适合服务器应用程序(您确实说过Windows 2003).对于每个服务器应用程序,您应该有一个单独的日志文件,该位置实际上是与管理员达成一致的惯例.例如,对于ASP.NET应用程序,我经常看到它们在模拟虚拟目录结构的文件夹结构下放置在与应用程序不同的磁盘上.
对于客户端应用程序,文本文件的一个缺点是用户可能会启动应用程序的多个副本(除非您已采取特定步骤来防止这种情况).因此,如果多个实例尝试写入同一个日志文件,则会出现争用问题.出于这个原因,我总是更喜欢Windows事件日志用于客户端应用程序.需要注意的是,您需要成为管理员才能创建事件日志 - 这可以通过安装程序包完成.
如果您确实使用了文件,我建议使用Environment.SpecialFolder文件夹.其他人建议的本地 ApplicationData而不是SpecialFolder.ApplicationData.LocalApplicationData位于本地磁盘上:当用户具有漫游配置文件时,您不希望网络问题阻止您进行日志记录.对于WinForms应用程序,请使用Application.LocalUserAppDataPath.
在任何一种情况下,我都会使用配置文件来决定记录的位置,以便您可以轻松更改它.例如,如果您使用Log4Net或类似的框架,您可以轻松配置是否在不更改应用程序的情况下登录文本文件,事件日志,两者或其他地方(例如数据库).