我需要为我的应用程序存储日志文件和配置文件.存放它们的最佳位置在哪里?
现在,我只是使用当前目录,最终将它们放在我的程序所在的Program Files目录中.
用户可能会定期访问日志文件,因此%APPDATA%
似乎有点难以实现.
目录下%USERPROFILE%\My Documents
最好吗?从2000年开始,它需要适用于所有版本的Windows.
如果您不是ConfigurationManager
用来管理您的应用程序和用户设置,那么您应该这样做..NET Framework中的配置工具包经过深思熟虑,并且与其互操作的Visual Studio工具也是如此.
ConfigurationManager
将不变(应用程序)和可修改(用户)设置放在正确的位置的默认行为:应用程序设置进入应用程序文件夹,用户设置进入System.Environment.SpecialFolder.LocalApplicationData
.它在支持.NET的所有Windows版本下都能正常运行.
至于日志文件,System.Environment.SpecialFolder.LocalApplicationData
通常是你想要放置它们的地方,因为它保证是用户可写的.
在某些情况下,您肯定不会 - 例如,如果您想将文件写入网络共享,以便您可以轻松地远程访问它们.有很多种方法可以实现,但大多数方法都是从创建包含共享文件夹路径的应用程序设置开始的.所有这些都涉及管理.
我有一些关于ConfigurationManager
和VS工具的抱怨:需要更好的高级文档,以及更好的VS生成Settings
类的文档.app.config
文件变为目标构建目录中的应用程序配置文件的机制是不透明的(并且是所有最常见问题之一的来源:"我的连接字符串发生了什么?").如果有一种方法可以创建没有默认值的设置,我还没有找到它.
注意:您可以使用以下函数获取.NET中LocalApplicationData文件夹的路径:
string strPath=System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
对于应用程序设置 - 使用System.Environment.SpecialFolder.ApplicationData - 这是存储漫游配置文件数据的位置,因此它允许您的用户从域中的不同计算机进行登录和工作.
对于日志文件 - System.Environment.SpecialFolder.LocalApplicationData
说实话,%appdata%仍然是放置配置文件和日志文件的最佳位置,因为它用于占位符来存储应用程序数据.它应该不难访问,只需在资源管理器中编写%appdata%,您将直接进入%appdata%目录.
接受的答案指出,对于日志文件,以下是一个好地方.
System.Environment.SpecialFolder.LocalApplicationData
这相当于C:\Users\[User]\AppData\Roaming
您可以看到的用户特定路径.与接受的答案一样,这是一个有保证的用户可写位置,对某些情况很有用
但是,在Web应用程序环境中,您可能正在网络帐户下运行应用程序,而您或同事可能需要尝试跟踪每个应用程序的日志记录.我个人喜欢使用非用户特定的位置枚举
System.Environment.SpecialFolder.CommonApplicationData
,相当于C:\ProgramData
.是的,您需要为您创建的任何文件夹指定访问权限,但这通常是一次性交易,然后您的所有应用程序日志都可以存在于一个快乐的位置.
此外,在浏览Internet时,还有一个项目以编程方式设置对您在其中创建的文件夹的写访问权限CommonApplicationData
,允许对CommonApplicationData进行写入/修改访问.