应用程序日志应该保存在哪里?

4

可能重复:
在Windows上存储应用程序日志文件的位置在哪里?

Windows 似乎有几个不同的地方,用于存储不同应用程序的日志。Windows 服务和一些应用程序使用 Windows 事件日志,其他应用程序使用 C:\ProgramData,另一个则将它们存储到 C:\Users(Local/System/Public/Default)\AppData/(Roaming/Local)。

我在开发 Windows 服务时注意到,默认的(AppData/Roaming)环境变量指向类似于 C:\Windows\System32\Users\system\AppData\Roaming 或其他完全荒谬的位置,因此我想知道是否有任何资料可以告诉我:用户应用程序/用户服务/系统服务的日志存储在何处,以及更一般的问题:这些应用程序文件夹都是用来做什么的(哪些归属于哪里)?

谢谢!


似乎与这个有关:https://dev59.com/5XI_5IYBdhLWcg3wAd82?rq=1 - Adrian
略微相关,但并非完全相关,因为我还要求用户不特定的应用程序和Windows服务。此外,不同日志记录方法的一般目的(例如Windows事件日志、AppData、Program Data)。感谢提供链接,但那个链接似乎没有解释清楚所有内容。 - user1450661
2个回答

12

对于特定用户的日志:

  • LocalApplicationData - %APPDATA%/Local/...

与用户配置文件关联的特定用户日志:

  • ApplicationData - %APPDATA%/Roaming/...

对于所有其他日志:

  • CommonApplicationData - %ALLUSERSPROFILE%/...

参见Environment.SpecialFolder了解其他文件夹。


2

日志的标准位置应该是 AppData 目录

如果日志数量或大小巨大,则使用 %APPDATA% 可能会在漫游配置文件中出现问题:这会减慢登录过程,因此您可以使用目录 %TEMP%,即 Windows 临时目录。


“AppData目录”是什么意思?你能举个例子路径吗? - user1450661
AppData 不是一个好的选择。原因是如果多个进程尝试写入同一个文件,就会出现问题。你必须为每个进程拥有一个文件或者一个单独的服务来记录日志。如果是用户特定的,则应该放在用户目录下;如果是服务,则应该放在事件查看器中。 - tsells
1
@Tsells 日志文件的位置与多个进程如何写入它没有任何关系 - 这取决于应用程序。AppData目录通常是日志文件的最佳存储位置,但这也取决于应用程序及文件用途。 - James
@James - 我的观点是,如果您将日志文件存储在单个共享位置并且有多个进程写入该文件,则会遇到进程竞争同一文件的重大问题。其中一个例子就是终端服务器。您必须为每个进程创建一个新文件,实施队列,写入用户特定目录或使用事件查看器。 - tsells
1
@tsells 我理解你想表达的观点...然而,我认为你没有理解我所说的重点。没有必要使用多个文件,实现队列等等。市面上有很多优秀的日志工具可以为你完成所有这些工作,比如NLoglog4net等等。所以,再次强调,你提到的问题是与特定应用程序相关,而与日志存储的方式和位置无关。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接