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