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」の形式の文字列を返します。