首页 文章

WinForm应用程序应该在哪里保留其日志?

提问于
浏览
5

我正在开发一个WinForm应用程序,它允许使用“项目”(将应用程序视为Visual Studio,将项目视为VS Solutions) .

我的问题是 - 应用程序应该在哪里保留其日志文件?

一些要求包括:

  • 应用程序可能没有以管理员身份运行(因此在%ProgramFiles%安装文件夹中保存不是一个好选择)

  • 最终用户可以访问日志(用于审阅或发送给支持团队) . (这意味着难以找到文件夹,例如%AppData%\ Company \ Application \ Version \ ProjectName ...也不是一个好的解决方案)

  • 即使没有打开项目,应用程序也可能生成日志(因此将项目中的日志保存为项目,但不是最终解决方案) .

我正在考虑在安装应用程序时创建一个"working folder" - 类似C:\ Application \,然后将日志保存在子文件夹中,如%WorkingFolder%\ Logs \ ProjectName

感谢您的投入 .

8 回答

  • 0

    如果用户目录中的某个位置特定于当前正在运行的用户,则它实际上是存储它们的正确位置 .

    某些程序在用户目录的顶层创建文件夹,在Documents and Desktop旁边,其他程序在Documents中创建 .

    如果用户没有对根目录的写访问权限,则在C:\中创建它可能会导致问题 . 您几乎可以保证用户具有对主目录的写入权限 .

    另一个选项是查找环境变量,如果它的集合使用该值作为位置,则默认为用户的主目录 .

  • 0

    如果日志仅是用户,则应将其存储在 %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的一篇很好的博客文章 . 虽然它不是"official stance"但它拥有一些很好的信息 .

  • 3

    您始终可以要求用户进行配置 . 设置默认路径,可能是应用程序目录 . 在安装过程中或在设置应用程序时,您可以提示用户输入要用于日志的路径 . 这是公平的,对 . 如果它们足够先进以使用日志,那么它们也足以配置路径 .

  • 0

    您打算如何处理日志 . 它们是技术性的,用于财务/安全审计吗?

    EventLog是技术日志的好地方,因为您可以远程访问它(在域内)并自动清理它 .

    %AppData%也是技术日志的好地方,特别是如果您无法连接到事件日志 . 您可以找到日志文件,并且可以将最终用户定向到它们,但它们不是最终用户的“面子” . 您可以包含“向制造商发送日志”按钮以接收它们 .

    对于最终用户需要访问的日志,“我的文档”(或子文件夹)看起来很好 .

  • 0

    您只需将按钮/菜单项添加到带日志的简易打开文件夹即可 . 日志的最佳位置是%AppData%\ AppName或%temp%\ AppName . 切勿使用%MyDocs%或%Program Files% .

  • 0

    我建议将这个问题添加到安装程序中,以便安装软件的用户可以决定最佳放置日志的位置 . 虽然 C:\[AppName\ 听起来像是您的要求的合理默认值 .

    编辑:刚想过,如果选择一个错误的位置(在Program Files或系统驱动器的根目录等)并且如果他们选择创建一个新目录,则可能值得警告用户,自动给该目录正确的权限在安装过程中 .

  • 2

    我认为%APPDATA%\ YourCompanyName \ YourAppName是首选位置 . 为了克服您对此位置难以找到的陈述,您可以非常轻松快速地在应用中实现简单的支持屏幕,以便最终用户能够轻松访问和通过电子邮件发送这些日志,这样用户就可以不必记住或手动导航到长路径名称以获取日志 .

    我不太喜欢用户能够通过安装程序设置此位置的想法,因为可能的命名和权限的问题 .

  • 0

    如果应用程序只需要为当前登录时间段的用户维护日志,那么您可以将其保存在c:/ temp中 .

    我的大多数winapps,我把它留在那里,所以一旦用户注销就会自动删除它 .

    当然,这主要取决于您的要求 .

相关问题