我们有一堆运行在Azure(和IIS 7.5)上的服务器。我试图编写一个独立的应用程序,它定期将来自服务器的日志文件聚合到一个中央位置。并且通过聚合,它实际上是将我们的自定义上传器指向目录并让它执行它的事情。获取IIS日志位置 - 服务器2k8&c#
是否有一种简单的方法(以编程方式)获取为我的网站配置的logdir的位置?
我们有一堆运行在Azure(和IIS 7.5)上的服务器。我试图编写一个独立的应用程序,它定期将来自服务器的日志文件聚合到一个中央位置。并且通过聚合,它实际上是将我们的自定义上传器指向目录并让它执行它的事情。获取IIS日志位置 - 服务器2k8&c#
是否有一种简单的方法(以编程方式)获取为我的网站配置的logdir的位置?
阿伦斯”答案是好的方向,但有几点我想补充:
<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 \日志\ LogFiles文件”
供参考:远程目标必须运行IIS'管理服务'。该服务必须启用并启动;否则你将无法查询这些信息。有关IIS远程管理服务的安装和配置的更多信息,请参见[this](http://www.iis.net/learn/manage/remote-administration/remote-administration-for-iis-manager)页面。 – codechurn 2014-07-06 19:35:48
谢谢。这正是我所期待的。至于使用存储帐户,我们考虑过它,但最终因为几个客户原因/目标而决定采用这种帐户。这会让所有事情都变得更简单:) – kosh 2012-08-09 23:51:26