这里讨论了异常日志应该去的问题一次或两次(或更多),其中一个建议是应用程序永远不应该写入安装文件夹.
但是,如果我将日志放在%appdata%中,这意味着每个用户都有自己的日志集.我更喜欢将所有日志放在一个位置.
在最后一个MSDN mag问题中,在安装文件夹中有一个单独的日志子文件夹(例如%programfiles\myapp\logs)被称为规则中的有效异常.当然,必须相应地设置此文件夹的ACL.
在安装文件夹中有一个日志文件夹常见的做法还是绝对禁止?你把你的例外日志放在哪里?
编辑:
事实上,我们使用的是log4net,因此日志记录的位置和类型是完全可配置的.但是,我希望有一个合理的默认值.我更喜欢在事件日志上有一个文件.对于大多数用户而言,文件比事件日志更容易处理.
但是,我们假设我想拥有文件.在安装文件夹中有一个日志文件夹可以吗?
对于Windows,请使用事件日志.创建自己的日志非常简单,或者您可以将消息添加到标准日志之一.
这样做的好处是,当事情不顺利时,地球上几乎每个技术人员(和程序员)都希望在事件日志中显示某些内容.
要记录到没有特殊ACL的公共文件,请使用类似的方法
string saveFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\MyCompany";
它引用了文件夹
C:\Documents and Settings\All Users\Application Data\MyCompany
在XP上,等等
C:\ProgramData\MyCompany
在Vista下.您需要在某个时候验证该文件夹是否存在 - 可能是在应用程序启动时.
使用较新的OS vista和win 2008写入程序文件目录可能需要ACL或虚拟化到用户的文件夹.我建议在%AllUsersProfile%下设置一个目录,这样你就可以为所有用户的日志文件提供一个公共位置,而你的应用程序不需要以管理员身份运行就可以在那里写入.