代码之家  ›  专栏  ›  技术社区  ›  SaguiItay

WinForm应用程序应将其日志保存在哪里?

  •  5
  • SaguiItay  · 技术社区  · 16 年前

    我正在开发一个WinForm应用程序,它允许使用“项目”(将应用程序看作visualstudio,将项目看作VS解决方案)。

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

    一些要求包括:

    • 应用程序可能不是以管理员身份运行的(因此在 %程序文件% 安装文件夹不是一个好的选择)
    • 最终用户应该可以访问这些日志(供审阅或发送给支持团队)。(这意味着很难找到文件夹,例如 %AppData%\Company\Application\Version\ProjectName。。。 也不是一个好的解决方案)
    • 即使没有打开的项目,应用程序也可能生成日志(因此只有在有项目的情况下才可以将日志保存在项目文件夹中,而不是最终的解决方案)。

    我在考虑在安装应用程序时创建一个“工作文件夹”——类似于C:\application\,然后将日志保存在一个子文件夹中,如 %工作文件夹%\Logs\ProjectName

    谢谢你的意见。

    8 回复  |  直到 16 年前
        1
  •  3
  •   Michael Shimmins    16 年前

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

    有些程序在用户目录的顶层,文档和桌面旁边创建文件夹,有些程序在文档中创建文件夹。

    另一个选项是查找环境变量,如果设置了该变量,则使用该值作为位置,如果没有,则默认为用户的主目录。

        2
  •  2
  •   Joshua    16 年前

    %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 是微软的克里斯·杰克逊写的一篇很好的博客。虽然这不是一个“官方立场”,它持有一些优秀的信息。

        3
  •  0
  •   Sidharth Panwar    16 年前

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

        4
  •  0
  •   GvS    16 年前

    你打算怎么处理这些日志。它们是否是技术性的,例如财务/安全审计?

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

        5
  •  0
  •   evg345    16 年前

    您只需将按钮/菜单项添加到带有日志的轻松打开文件夹即可。 从不使用%MyDocs%或%Program Files%。

        6
  •  0
  •   Hans Olsson    16 年前

    我建议将这个问题添加到安装程序中,这样安装软件的用户就可以决定将日志最好放在哪里。不过 C:\[AppName\ 听起来你的要求是合理的默认值。

    编辑:只要考虑一下,如果选择一个错误的位置(在程序文件中或系统驱动器的根目录中等),并且如果他们选择创建一个新目录,那么在安装过程中,它可能值得警告用户。

        7
  •  0
  •   PaulR    16 年前

    我认为%APPDATA%\YourCompanyName\YourAppName是首选位置。为了克服你的反对意见,这个位置很难找到,你可以很容易和快速地实现一个简单的支持屏幕在你的应用程序中,让最终用户能够访问和电子邮件这些日志没有太多的麻烦,这样用户就不必记住或手动导航到长路径名称来获得日志。

    我不太喜欢用户可以通过安装程序设置这个位置,因为可能存在命名和权限问题。

        8
  •  0
  •   srivatsayb    16 年前

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