我正在开发一个WinForm应用程序,它允许使用“项目”(将应用程序视为Visual Studio,将项目视为VS解决方案)。
我的问题是 - 应用程序应该在哪里保留其日志文件?
一些要求包括:
我正在考虑在安装应用程序时创建一个“工作文件夹” - 类似于C:\ Application \,然后将日志保存在子文件夹中,例如%WorkingFolder%\ Logs \ ProjectName
感谢您的投入。
答案 0 :(得分:3)
用户目录中的某个位置实际上是存储它们的正确位置,如果它们特定于当前正在运行的用户。
某些程序在用户目录的顶层创建文件夹,文档和桌面旁边的文件夹,其他程序在文档中创建文件夹。
如果用户没有对根目录的写访问权限,则在C:\中创建它可能会导致问题。您几乎可以保证用户具有对主目录的写访问权。
另一个选项是查找环境变量,如果它的集合使用该值作为位置,则默认为用户的主目录。
答案 1 :(得分:2)
如果日志仅供用户使用,则应将其存储在%AppData%\Company\Application Name
。
如果共享日志(任何用户都可以看到任何日志),您应该将它们存储在:
%ProgramData%\Company\Application Name
(适用于Vista +)
或
%AllUsersProfile%\Application Data\Company\Application Name
(对于XP - )
对于用户访问,您可以将开始菜单的快捷方式添加到适当的位置,或在程序中添加链接。
Vista +中的另一个选项是Public
文件夹(%Public%
),它在整个资源管理器中都有链接,方便访问。
Where should I write program data instead of Program Files是来自微软的Chris Jackson的一篇很好的博客文章。虽然它不是一个“官方立场”,但它拥有一些很好的信息。
答案 2 :(得分:0)
您始终可以要求用户进行配置。设置默认路径,可能是应用程序目录。在安装过程中或在设置应用程序时,您可以提示用户输入要用于日志的路径。这是公平的,对。如果它们足够先进以使用日志,那么它们也足以配置路径。
答案 3 :(得分:0)
我建议将该问题添加到安装程序,以便安装软件的用户可以决定最佳放置日志的位置。虽然C:\[AppName\
听起来像是您的要求的合理默认值。
编辑:刚想过,如果选择一个错误的位置(在Program Files或系统驱动器的根目录中等)并且如果他们选择创建一个新目录,则可能值得警告用户,自动给出安装期间目录正确的权限。
答案 4 :(得分:0)
您打算如何处理日志。它们是技术性的,用于财务/安全审计吗?
EventLog是技术日志的好地方,因为您可以远程访问它(在域内)并自动清理它。
%AppData%也是技术日志的好地方,特别是如果您无法连接到事件日志。您可以找到日志文件,并且可以将最终用户定向到它们,但它们不是最终用户的“面子”。您可以包含“向制造商发送日志”按钮以接收它们。
对于最终用户需要访问的日志,“我的文档”(或子文件夹)看起来不错。
答案 5 :(得分:0)
您只需将按钮/菜单项添加到包含日志的简易打开文件夹即可。 日志的最佳位置是%AppData%\ AppName或%temp%\ AppName。 切勿使用%MyDocs%或%Program Files%。
答案 6 :(得分:0)
我认为%APPDATA%\ YourCompanyName \ YourAppName是首选位置。为了克服您对此位置难以找到的陈述,您可以非常轻松快速地在应用中实现简单的支持屏幕,以便最终用户能够轻松访问和通过电子邮件发送这些日志,这样用户就可以不必记住或手动导航到长路径名称以获取日志。
由于可能存在命名和权限问题,我不太喜欢用户能够通过安装程序设置此位置的想法。
答案 7 :(得分:0)
如果应用只需要为当前登录时间段的用户维护日志,那么您可以将其保存在c:/ temp。
我的大多数winapps,我把它留在那里,所以一旦用户注销就会自动删除它。
当然,这主要取决于您的要求。