第 6 回 Open 棟梁でクラウドアプリ開発 (2)
こんにちは!今回は、前回に引き続き、Microsoft Azure の PaaS 環境である「Web Apps」に Open 棟梁の Web アプリケーションを展開する方法をご紹介していきたいと思います。
Open 棟梁の設定ファイル、SQL ファイルの移行
Open 棟梁には、以下のようなさまざまな設定ファイルが存在します。
- 画面遷移や通信制御などの設定ファイル
既定ではC:\root\files\resource\Xml フォルダに格納 - ログ出力の設定ファイル
既定ではC:\root\files\resource\Log フォルダに格納
また、データベースアクセスに使用する SQL ファイルは、既定では
C:\root\files\resource\Sql フォルダに格納されます。
Azure Web Apps では、このパスが見えないので、以下の修正が必要です。
- 設定ファイルをサンプル Web アプリケーションに含める
- [ソリューション エクスプローラー] で設定ファイルを選択し、[プロパティ] ペインの [ビルド アクション] を「埋め込みリソース」にする
- サンプル Web アプリケーションの app.config を開き、以下のように修正する
- Open 棟梁の設定ファイル
C:\root\files\resource\xxxとなっているところを、[既定の名前空間名].[フォルダ名].[ファイル名]に修正する - SQL ファイル
C:\root\files\resource\Sqlとなっているところを、[既定の名前空間名].[フォルダ名]に修正する
ログファイルの移行
Azure Web Apps の診断ログの有効化
Azure の組み込みの診断機能を利用することで、Web Apps を診断し、診断結果をログに残すことができます。 この診断機能は、プログラムから出力された「トレースログ」を監視し、そのトレースログをファイルシステムまたは Blob に出力します。 Azure Web Apps の診断ログを有効化する方法については、以下のサイトを参照してください。
このサイトに書かれているように、Microsoft Azure のポータル画面から、Azure App Service の「診断ログ」メニューで、必要なログの設定を行ってください。
Open 棟梁のログ部品
Open 棟梁のログ部品は、オープンソースのlog4netを使用しています。 既定では、Open 棟梁のログ部品を使用して出力されたログは、.log ファイルとしてファイルシステムに保存されます。 しかし、Azure の場合は、先ほどの Azure Web Apps の診断ログを使用します。 つまり、Azure の場合、ファイルシステムに直接ログを書き込むのではなく、以下のようにする必要があります。
- Trace ログとして、アプリケーションログを出力する (log4net の設定で、使用する Appender をRollingFileAppenderからTraceAppenderに変更する)
<appender name="ACCESS" type="log4net.Appender.TraceAppender">
<!-- メッセージのフォーマット -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
</layout>
</appender>
<appender name="SQLTRACE" type="log4net.Appender.TraceAppender">
<!-- メッセージのフォーマット -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
</layout>
</appender>
<appender name="OPERATION" type="log4net.Appender.TraceAppender">
<!-- メッセージのフォーマット -->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="[%date{yyyy/MM/dd HH:mm:ss,fff}],[%-5level],[%thread],%message%newline" />
</layout>
</appender>
- Trace を Azure 側で監視し、ファイルシステムまたは Blob に書き込む
プログラムの改修
最後に、Open 棟梁のデータアクセスクラスが、SQL ファイルを「埋め込みリソース」から探すようにプログラムを改修します。
- 画面遷移や通信制御などの設定ファイル
- ログ出力の設定ファイル
Azure Web Apps へのデプロイ
それでは、作成した Web アプリケーションを Web Apps にデプロイしてみましょう。 Web Apps へのデプロイの方法にはいくつかあり、こちらのサイトで紹介されています。 それでは、今回はこの中から、ローカル Git を使う方法でデプロイしてみましょう。
動作確認
それでは、ちゃんと Web Apps にデプロイされたか、見てみましょう。
- Microsoft Azure のポータル画面から、Web アプリケーションの URL を確認する
- ブラウザで、http://[Web アプリケーションのドメイン]/Aspx/start/menu.aspx を開く
正しく表示されていますね。それでは、ログも見てみましょう。 Azure の診断ログの確認方法にもいくつかあり、こちらのサイトで紹介されています。 ここでは、Azure SDK に含まれる Cloud Explorer を使用して、ログを見てみましょう。 Visual Studio で、Cloud Explorer が表示されていない場合は、[表示]-[Cloud Explorer] から、Cloud Explorer を表示させておいてください。
Cloud Explorer で、[サブスクリプション名]-[Storage Accounts]-[アカウント名]-[Blob Containers]-[コンテナ名] を開くと、そのコンテナに含まれるファイルが表示されます。
一番上の CSV ファイルをダブルクリックし、ダウンロードします。ファイルの中身を確認すると、ちゃんとログが出力されていることがわかります。
2017-01-17T08:24:11,Verbose,[Web Apps 名],4262c7,636202382516787570,0,6356,-1,"ACCESS: [2017/01/17 08:24:10,803],[DEBUG],[8],,-,[IP アドレス],-----↓,Global.asax,Application_OnPreRequest
ACCESS: [2017/01/17 08:24:11,085],[INFO ],[8],,未認証,[IP アドレス],postback,login
ACCESS: [2017/01/17 08:24:11,085],[INFO ],[8],,未認証,[IP アドレス],----->,login,txtUserID
ACCESS: [2017/01/17 08:24:11,085],[INFO ],[8],,未認証,[IP アドレス],<-----,login,txtUserID,,3,0
ACCESS: [2017/01/17 08:24:11,100],[INFO ],[8],,未認証,[IP アドレス],----->,login,btnButton1
ACCESS: [2017/01/17 08:24:11,100],[INFO ],[8],,aaa,[IP アドレス],<-----,login,btnButton1,,2,0
ACCESS: [2017/01/17 08:24:11,100],[DEBUG],[8],,-,[IP アドレス],-----↑,Global.asax,Application_OnPostRequest,-,-,82,78
ACCESS: [2017/01/17 08:24:11,647],[DEBUG],[13],,-,[IP アドレス],-----↓,Global.asax,Application_OnPreRequest
ACCESS: [2017/01/17 08:24:11,678],[INFO ],[13],,aaa,[IP アドレス],init,menu
Trace Debug",
最後に
Open 棟梁によるクラウドアプリ開発方法をご紹介いたしましたが、いかがでしょうか。 もはや Microsoft Azure など、クラウドの利用は当たり前の時代になっています。 実際には、今回ご紹介した内容以外にも、セキュリティなど、クラウドに移行することで考慮すべき事柄はありますが、クラウドアプリ開発でも、Open 棟梁が十分に活用できることを実感していただければ幸いです。