我们在Azure(和IIS 7.5)上运行了一堆服务器。我试图编写一个独立的应用程序,定期将日志文件从服务器聚合到一个中心位置。通过聚合,它实际上是将我们的自定义上传器指向目录并让它做到这一点。
是否有一种简单的方法(以编程方式)获取为我的网站配置的logdir的位置?
答案 0 :(得分:5)
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)。
答案 1 :(得分:2)
您可以使用类似于以下内容的方式获取IIS7日志文件位置:
using (ServerManager manager = ServerManager.OpenRemote("yourservername"))
{
Site defaultSite = manager.Sites[0];
string loglocation=defaultSite.LogFile.Directory;
}
它将以这种格式返回一个字符串:“%SystemDrive%\ inetpub \ logs \ LogFiles”