2009-10-15 82 views
25

将应用程序的调试日志文件放置在Windows用户环境中的最佳“标准”位置是什么?在Windows上存储应用程序日志文件的位置

在这种特殊情况下,它是一次运行并可能出错的应用程序。它将由系统管理员类型运行,可能需要在应用程序运行后检查日志。每次运行应用程序时,都会创建一个新的日志文件。已到目前为止浮动

选项包括:

  1. 程序目录
  2. 用户桌面
  3. 用户的本地应用程序数据目录。

我有我的最爱,但我想知道SO共识是什么。

注意:这与this question类似,但我们正在处理的应用程序只能由一个用户运行一次。

+0

日志文件的用途是什么?这可能会推动答案。谁会看?在大多数情况下会被看到吗?只有看看是否有问题? – noctonura

+0

该工具是一个数据库升级工具,它为您的数据库做了一堆事情。日志显示了它所做的一切,包括错误。大多数用户可能只是在出现错误时才查看它,但我们预计很多DBA会想知道到底做了什么。所以他们会想找到日志并看看它。 –

+0

另请参阅[这个问题](http://stackoverflow.com/questions/269893/best-place-to-store-config-files-and-log-files-on-windows-for-my-program) –

回答

13

Application Data目录似乎是一个完美的地方,但它是一个几乎看不见的区域。你需要给你的用户一个简单的方法来实现它。

让您的安装脚本在应用程序数据区域为您的程序创建一个日志文件夹,并在“开始”菜单中包含指向该文件夹的链接。

+2

AppData文件夹是最好的地方,但它确实需要程序或开始菜单中的链接才能轻松访问,即使对于管理员类型的用户也是如此。为什么不在运行结束时弹出日志文件,或者打开AppData文件夹的资源管理器窗口? ProgramFiles文件夹是错误的,除非你是安装程序,否则Vista会将其视为只读文件。用户文档和桌面是不好的选择,他们应该保持清楚,用于用户创建(键入,下载)而不是日志的文档。 – Martin

+0

听起来像一个很好的想法给我... –

+0

你能详细解释这个答案吗?我会怎样命名我在应用程序数据中创建的日志文件夹?我的应用程序的名称?组织名称?什么是Windows约定? – Thunderforge

1

Windows临时文件夹

+6

为什么?谁会在那里寻找一个日志文件。这不是一个临时文件,海事组织。 –

+1

他告诉“一个应用程序只可能由一个用户运行一次”,这个信息我认为是临时日志和临时应用程序。 – Zote

4

日志的“标准”位置是AppData目录。但是,真正取决于你想存储它们的位置。由于它们是管理员(高级用户),因此将日志存储在与正在运行的应用程序相同的目录中应该没有问题。即使在用户的MyDocuments将是一个很好的呼喊。

+3

好点,但我不希望将事情记录到我的文档或桌面 - 这些是用户的地方,我不认为应用程序应该写任何东西给他们,除非被用户指示。 –

+0

应用程序(默认情况下)将项目保存在MyDocuments文件夹中并不罕见,例如模板。 Visual Studio和Delphi一样。 – James

+0

当事情将事情保存到我的文档时,我个人会感到恼火,但那就是我。其中一个反对AppData的观点是用户不易“发现”,所以我的文档可能会更好...... –

2

1.程序目录< - 不好。理想情况下,您只会在此文件夹上拥有接收权限。

2.用户的桌面< - 技术上可以完成,但我不喜欢这个想法。污染桌面......作为用户,我不喜欢它。

3.用户的本地应用程序数据目录。 < - 更好

我的首选项是程序目录下的一个子目录(具有像“DebugLog”或类似的明确名称)。在该子目录权限应允许创建和写入文件(“更改”将被罚款)

+2

在程序目录下使用任何东西是一个坏主意,因为它是使用该机器的任何用户共享的。然后你会授予任何人对此DebugLog目录的读/写权限吗?然后你有安全问题,不同的用户覆盖eachothers的日志文件等....你的#3是正确的答案恕我直言。 – noctonura

+0

你很对。在这种特殊情况下(调试日志记录),在我看来,一个子目录是可以接受的。 (这不是使用这个软件的标准方式,而是一个例外)。因此,允许将调试日志存储在Debug子目录中即可。应该使用唯一名称创建调试日志以防止覆盖。 – DmitryK

+0

当您运行安装程序时,您将如何确定用户在Program Files中创建的文件夹。 –

4

在我工作的组织,我们使用(%TEMP%或%TMP%)\ CompanyOrProductName \ Logs目录 使用%APPDATA%如果日志很多或很大,可能会出现漫游配置文件的问题:它会减慢它们的登录过程...

+1

好点。在AppData中倾倒东西时要记住一些事情。 –

+11

考虑%LOCALAPPDATA% - 非漫游等效。 –

+1

我不会在TEMP文件夹中存储日志文件。 TEMP中的文件应该是临时的,可以随时删除。日志的目的是保持在那里,直到发生不好的事情,或者你需要咨询它。你不希望你的日志被系统随机删除,并且在你需要它的那一天结束。如果日志变得太大,您需要设置应用程序以使用循环日志或在一段时间后删除较早的文件。 –

1

如果您将EXPECT出错了,请将其放在用户的本地Application Data目录中。

如果你不想,只想记录反正我可能会考虑真正使用临时目录。推理很简单。如果应用程序只运行一次,您将在Application Data目录中留下垃圾,否则没有人会再次需要。在临时你至少有CHANCE,它将在稍后被清理。

顺便说一句:恕我直言,最好的将不会创建日志作为一个文件在所有(登录到内存),直到出现问题。然后,您仍然可以提供一个对话框,供用户选择在哪里保存日志。

相关问题