exception日志应该去哪里的问题已经在这里讨论了一次或两次(或更多),其中一个build议是应用程序不应该写入安装文件夹。
但是,如果我将日志放在%appdata%的某处,这意味着每个用户都有自己的一组日志。 我宁愿将所有日志都放在一个位置。
在最后一个MSDN mag问题之一中,在安装文件夹(例如%programfiles \ myapp \ logs)中有一个单独的子文件夹日志被称为有效的exception。 当然,这个文件夹的ACL必须相应的设置。
安装文件夹中是否有一个日志文件夹或绝对不行? 你把你的exception日志放在哪里?
编辑:
实际上,我们使用的是log4net,所以日志的位置和types是完全可configuration的。 不过,我想要有一个合理的默认值。 我更喜欢在事件日志中有一个文件。 对于大多数用户来说,文件比事件日志更容易处理。
不过,我们假设我想要文件。 在安装文件夹中有日志文件夹可以吗?
随着更新的OS Vista和胜利2008写入程序文件目录可能需要ACL或虚拟化到用户的文件夹。 我建议在%AllUsersProfile%下设置一个目录,这样你的所有用户的日志文件都有一个公共位置,你的应用程序不需要以管理员的身份运行。
对于Windows,请使用事件日志。 创建自己的日志非常简单,或者您可以将消息添加到其中一个标准日志中。
这有一个好处,就是当地球上的每一个技术人员(和程序员)都不期望在事件日志中出现什么东西的时候。
要记录到没有特殊ACL的通用文件,请使用类似的东西
string saveFolder = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + @"\MyCompany";
其中引用的文件夹中
C:\Documents and Settings\All Users\Application Data\MyCompany
在XP上,和类似的东西
C:\ProgramData\MyCompany
在Vista下。 您需要验证文件夹是否存在,可能是在应用程序启动时。
如果你不能或者不会使用事件日志,那么在哪里放置日志文件确实没有任何标准化。 您只需要确定该位置是有据可查的,并且确实需要在您的代码中有逻辑,以确保日志文件的大小有一个限制。
这主要取决于应用程序,这就是为什么我猜测有这么多可能的答案。
对于网站,我会在服务器上有一个“C:\ log”,然后是个人网站的“C:\ log \ website”,并使用Log4Net或类似的。
对于Web服务,窗口服务,预定作业等,我会写入Windows事件日志。 我的电脑 – >管理 – >系统工具 – >事件视图 – >(我的服务)
对于在我控制的环境(即内部公司应用程序)中部署的Windows应用程序,我会发邮件给“IT团队”例外报告。
对于未知用户不适用的Windows应用程序。 没做什么。
您需要注意写入日志文件夹的权限。
这是使用应用程序数据文件夹而不是安装文件夹的主要原因之一,因为在Vista中,向前移动,默认情况下,您可能无法写入安装文件夹。
我认为你应该更喜欢AppData文件夹,但是如果你想合并所有日志在一个文件夹中,然后使用所有用户目录(Environment.SpecialFolder.CommonApplicationData),并在每个用户的应用程序文件夹内创建子文件夹。 这样,你不仅摆脱许可问题,而且还避免混乱自己的空间:)恕我直言。