log4netをASP.NET MVC 5.0 on AzureWebSiteで使ってみた。
環境は以下。
以下手順。
環境は以下。
- VisualStudio2013
- log4net1.2.13
- Windows AzureのWebサイト
以下手順。
- NuGetからげっと
- NuGet起動、基本ですね。
- log4netインスト完了。
- 設定します
- Global.asaxでlog4net用のxmlを読み込み ※ここに設定入れずに、Web.configに入れる方法もある。
- log4net.xmlを作成
Log4Net を利用してログを記録する を参考に設定! - が、うまくでないときは
- log4netでうまくログが出ない場合
特に、↓これだけでもだいぶ違った。
”ログ設定を読み終えた後で、「logger.Logger.Repository.Configured」を確認する。ここがFalseの場合、設定ファイルがきちんと読めていない。” - ログを出すためのログが欲しかった・・・。
- AssemblyInfo.csへの設定とか、Web.conigの設定とか、
いろいろ迷う方法がありますが、必要ありませんでした。
- log4netでうまくログが出ない場合
- その他
- AzureのWebサイトに直接吐き出すために、Fileを無理くり変更。どうなのよ、これ・・・。
protected void Application_Start() { // なんか他の設定もするならこの辺にほげもげ log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath(@"~/App_Data/log4net.xml"))); log4net.Repository.ILoggerRepository[] repos = log4net.LogManager.GetAllRepositories(); foreach (var repo in repos) { foreach(var appender in repo.GetAppenders()) { log4net.Appender.FileAppender file = appender as log4net.Appender.FileAppender; if(file != null) { // 実際にはファイル名判定かけながら、適切なファイル名を設定している。 file.File = Server.MapPath(@"~/適切なDir/") + 適切なファイル名; file.ActivateOptions(); } } } }
- Blobストレージにも飛ばせる
Windows AzureでLog4Net RollingFileAppenderを使う
迷ったが、今回はパスしてみた。
またの機会にやるとします。 - FTPでログを取得するために排他制御の設定もいれましょう
Log4Netで複数プロセスから同じログファイルに書き込み を参考に設定!
protected void Application_Start() { // なんか他の設定もするならこの辺にほげもげ // で、以下log4net用のconfigファイルを設定。 log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(Server.MapPath(@"~/App_Data/log4net.xml"))); }
- 意外とIISで使っている設定方法がGoogle先生に教えてもらえない
(単なる聞き方の問題かも・・・) - NuGetから取得している人の情報がない
(当たり前すぎて書かないのか・・・) - 知ってれば楽勝だけど、知らないとはまる
(知らなくてはまった・・・) - やっぱり便利!!!
コメント
コメントを投稿