我们有一堆在 Azure(和 IIS 7.5)上运行的服务器。我试图编写一个独立的应用程序,它会定期将来自服务器的日志文件聚合到一个中心位置。通过聚合,它实际上是将我们的自定义上传器指向目录并让它完成它的事情。
有没有一种简单的方法可以(以编程方式)获取为我的站点配置的 logdir 的位置?
我们有一堆在 Azure(和 IIS 7.5)上运行的服务器。我试图编写一个独立的应用程序,它会定期将来自服务器的日志文件聚合到一个中心位置。通过聚合,它实际上是将我们的自定义上传器指向目录并让它完成它的事情。
有没有一种简单的方法可以(以编程方式)获取为我的站点配置的 logdir 的位置?
AaronS 的回答是朝着好的方向,但我想补充几点:
<Runtime executionContext="elevated"/>
using (ServerManager serverManager = new ServerManager())
{
var siteName = RoleEnvironment.CurrentRoleInstance.Id + "_Web";
var id = serverManager.Sites[siteName].Id;
var logFile = serverManager.Sites[siteName].LogFile;
var iisLogDirectory = String.Format("{0}\\W3SVC{1}", logFile.Directory, id);
}
注意:对于我的 3 条评论,我假设您使用的是 PaaS WebRole(而不是 IaaS VM)。
您可以使用类似于以下内容的方式获取 IIS7 日志文件位置:
using (ServerManager manager = ServerManager.OpenRemote("yourservername"))
{
Site defaultSite = manager.Sites[0];
string loglocation=defaultSite.LogFile.Directory;
}
它将以这种格式返回一个字符串:“%SystemDrive%\inetpub\logs\LogFiles”