以编程方式检索ASP.NET应用程序中的IIS日志文件位置

时间:2012-02-27 09:33:07

标签: asp.net iis wmi

我正在尝试确定ASP.NET应用程序的IIS日志文件位置的位置。我试过WMI,但是找不到它。有什么建议吗?

注意:我希望能够以编程方式检索位置;在我的申请中进一步使用。 编辑:这是我的代码:这有效,但没有给我日志的实际物理目录位置。所以这基本上没用了。

ManagementPath p2=new ManagementPath("IIsLogModule.Name='logging/Microsoft IIS Log File Format'");
ManagementObject log = new ManagementObject(scope, p2, objectGet);
log.Get();
logPath.Text = log["__PATH"].ToString();

2 个答案:

答案 0 :(得分:5)

在IIS7上您可以使用Microsoft.Web.Administration程序集,Site类有一个名为LogFile的属性,您可以获取有关站点日志文件的各种信息,例如可以获取日志文件目录使用此代码:

  ServerManager manager = new ServerManager();
  Site mySite = manager.Sites["SiteName"];
  Response.Write("Log file directory : " + mySite.LogFile.Directory + "\\W3svc" + mySite.Id.ToString());

我不太喜欢网站目录前缀的硬编码部分,但没有找到任何其他更好的方法

答案 1 :(得分:0)

您应该能够使用ADSI(或WMI)来执行此操作 - 浏览IIS元数据库并查找网站节点的“LogFileDirectory”属性。例如,

var root = new DirectoryEntry(@"IIS://localhost/W3SVC");
var sites = root.Children;
foreach(DirectoryEntry site in sites) {
   var name = site.Properties["ServerComment"][0];
   var logFile = site.Properties["LogFileDirectory"][0];
}

免责声明:未经测试的代码

使用类似的想法查看this powershell example