2017-05-08 6 views
0

すべてのWebサーバーの要求をファイルではなくSQLに記録します。WebserverのログAzure - > SQL Server

Azureポータルでは、ファイルシステムまたはストレージに保存するオプションしかないようです。

代わりにSQLデータベースに保存する方法はありますか?

答えて

1

代わりにSQLデータベースに保存する方法はありますか?

現在、Azure Web Appはこの機能を提供していません。次のサイトに機能リクエストを投稿することができます。

How can we improve Azure Web Apps?

WebサーバーのログW3Cログ形式を使用します。このログをStorageに保存するオプションを選択した場合。 Azure Blob Serviceのログファイル名の形式は、次のようになります。

Azure Web Appはロググループを時間単位で保存します。 WebJobを作成し、TimeTriggerを使用してログアウトを読み込み、ログファイルを解析し、毎時SQL Serverにデータを保存することができます。下記のコードは参照用です。

// Runs immediately on startup, then every two hour 
public static void SaveLogsToSQLJob(
    [TimerTrigger("0 0 * * * *", RunOnStartup = true)] TimerInfo timerInfo) 
{ 
    // Retrieve storage account from connection string. 
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse("connection_string"); 

    // Create the blob client. 
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

    // Retrieve a reference to a container. 
    CloudBlobContainer container = blobClient.GetContainerReference("ServerLogContainerName"); 

    var blobs = container.GetDirectoryReference("YourWebAppName").GetDirectoryReference(DateTime.Now.Year.ToString()) 
     .GetDirectoryReference(DateTime.Now.Month.ToString()) 
     .GetDirectoryReference((DateTime.Now.Hour == 0 ? DateTime.Now.Day - 1 : DateTime.Now.Day).ToString()) 
     .GetDirectoryReference((DateTime.Now.Hour == 0 ? 23 : DateTime.Now.Hour - 1).ToString()).ListBlobs(); 

    foreach (CloudBlockBlob blob in blobs) 
    { 
     using (Stream stream = blob.OpenRead()) 
     { 
      using (StreamReader sr = new StreamReader(stream)) 
      { 
       string line = null; 
       while ((line = sr.ReadLine()) != null) 
       { 
        if (!line.StartsWith("#")) 
        { 
         string[] fields = line.Split(' '); 
         //Save these fields to database 
        } 
       } 
      } 
     } 

    } 
} 

ログファイルに従って、SQLテーブルに次の16個の列を作成する必要があります。

date time s-sitename cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Cookie) cs(Referer) cs-host sc-status sc-substatus sc-win32-status 
関連する問題