it技術:dotnet:ログ出力
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| it技術:ログ出力 [2017/04/02 00:56] – yajuadmin | it技術:dotnet:ログ出力 [2023/01/24 09:46] (現在) – [ログローテーション連番] yajuadmin | ||
|---|---|---|---|
| 行 3: | 行 3: | ||
| ===== log4net ===== | ===== log4net ===== | ||
| オープンソースのロギング・サービス「log4net」\\ | オープンソースのロギング・サービス「log4net」\\ | ||
| - | [[http:// | + | * [[http:// |
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| - | Assembly.vbに下記の設定をしないと、ログが出力されてこない。 | + | ==== 導入 ==== |
| - | <code vbnet Assembly.vb> | + | メニューのツール > Nugetパッケージ マネージャー > |
| + | |||
| + | ==== Winフォームでの設定 ==== | ||
| + | === AssemblyInfo === | ||
| + | AssemblyInfo.vbに下記の設定をしないと、ログが出力されてこない。 | ||
| + | <code vbnet AssemblyInfo.vb> | ||
| ' | ' | ||
| < | < | ||
| + | |||
| ' | ' | ||
| - | '< | + | < |
| </ | </ | ||
| - | App.configのconfigSectionsタグ内に下記の定義を行う。 | + | C# |
| + | <code csharp AssemblyInfo.cs> | ||
| + | // | ||
| + | [assembly: log4net.Config.XmlConfigurator(Watch = true)] | ||
| + | |||
| + | // | ||
| + | [assembly: log4net.Config.XmlConfigurator(ConfigFile = " | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | log4net.dllを参照後、App.configにlog4netの設定を記述してデバッグログ出力しようとしたら「構成システムを初期化できませんでした。」と例外エラーが発生しました。 | ||
| + | |||
| + | === App.config === | ||
| + | App.configのconfigSectionsタグ内に下記の定義を行う。\\ | ||
| + | ※AssemblyInfoとセットなので、これをしないと「構成システムを初期化できませんでした。」の例外エラーとなる。 | ||
| <code xml App.config> | <code xml App.config> | ||
| < | < | ||
| 行 21: | 行 46: | ||
| App.configのlog4netの定義を行う。\\ | App.configのlog4netの定義を行う。\\ | ||
| + | 「Test」というアプリケーション名にした場合\\ | ||
| 下記の設定内容では、Test.exe直下にlogフォルダが作成され、Test_yyyyMMdd.logのファイルが出力される。\\ | 下記の設定内容では、Test.exe直下にlogフォルダが作成され、Test_yyyyMMdd.logのファイルが出力される。\\ | ||
| + | |||
| + | アプリケーション名が不要の場合、下記の設定で実行ファイルのフォルダ直下に自動でlogフォルダに、yyyyMMdd.logのファイルが出力される。 | ||
| + | <code xml> | ||
| + | <!-- 作成するログファイル --> | ||
| + | <param name=" | ||
| + | < | ||
| + | </ | ||
| + | |||
| 【ログの中身】\\ | 【ログの中身】\\ | ||
| 2016/09/23 17:25:50 [INFO ] テスト | 2016/09/23 17:25:50 [INFO ] テスト | ||
| 行 36: | 行 70: | ||
| <!-- 作成するログファイル --> | <!-- 作成するログファイル --> | ||
| - | <param name=" | + | <param name=" |
| <!-- 追記する場合true/ | <!-- 追記する場合true/ | ||
| 行 74: | 行 108: | ||
| </ | </ | ||
| + | ==== ASP.NETでの設定 ==== | ||
| + | AssemblyInfoの代わりに、Global.aspx に定義を行う。\\ | ||
| + | ※但し、ログ設定を別ファイルにする場合は、AssemblyInfo に記述する。\\ | ||
| + | App.configの代わりにWeb.Configに設定を追加する。 | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | 指定したlogsフォルダはWeb.configと同じ階層に作成される。 | ||
| + | |||
| + | === Global.aspx === | ||
| + | <code csharp Global.aspx.cs> | ||
| + | protected void Application_Start() | ||
| + | { | ||
| + | log4net.Config.XmlConfigurator.Configure(); | ||
| + | AreaRegistration.RegisterAllAreas(); | ||
| + | RouteConfig.RegisterRoutes(RouteTable.Routes); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | === Web.Config === | ||
| + | <code xml Web.Confog> | ||
| + | < | ||
| + | <!-- log4netセクションのハンドラ設定 --> | ||
| + | <section name=" | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | <!-- ===================================================================== --> | ||
| + | < | ||
| + | <!-- ===================================================================== --> | ||
| + | < | ||
| + | <!-- ログのレベルを指定 --> | ||
| + | <!-- ALL > DEBUG > INFO > WARN > ERROR > FATAL --> | ||
| + | <level value=" | ||
| + | <!-- どのログ出力先を使用するか --> | ||
| + | < | ||
| + | </ | ||
| + | <!-- ===================================================================== --> | ||
| + | < | ||
| + | <!-- ===================================================================== --> | ||
| + | <!-- ▼ファイル出力用[RollingFileAppender](日付や時刻の制約に基づいたログファイルの生成) --> | ||
| + | < | ||
| + | <param name=" | ||
| + | <!-- ファイル名 --> | ||
| + | <param name=" | ||
| + | <!-- 追記する場合true/ | ||
| + | <param name=" | ||
| + | <!-- 日付や時刻の制約によるログファイルの切替 --> | ||
| + | <param name=" | ||
| + | <!-- 上から「毎月、毎週、毎日、半日、毎時、毎分」の設定(デフォルトは毎時) --> | ||
| + | <param name=" | ||
| + | <param name=" | ||
| + | <layout type=" | ||
| + | <param name=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | ==== プログラムに組み込む ==== | ||
| プログラムでログ出力する場合 | プログラムでログ出力する場合 | ||
| - | <code vbnet> | + | <code vbnet frmMain.vb> |
| - | ' | + | Imports log4net |
| + | ' loggerを生成する(以下の記述は、ほとんどのコードで利用できる) | ||
| Private _logger As ILog = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType) | Private _logger As ILog = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType) | ||
| 行 85: | 行 180: | ||
| _logger.Fatal(" | _logger.Fatal(" | ||
| </ | </ | ||
| + | |||
| + | C# | ||
| + | <code csharp frmMain.cs> | ||
| + | // loggerを生成する(以下の記述は、ほとんどのコードで利用できる) | ||
| + | using log4net; | ||
| + | private ILog _logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||
| + | |||
| + | _logger.Debug(" | ||
| + | _logger.Info(" | ||
| + | _logger.Warn(" | ||
| + | _logger.Error(" | ||
| + | _logger.Fatal(" | ||
| + | </ | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | ==== ログが途中で止まる現象 ==== | ||
| + | とあるシステムで発生している。最後まで出力されたり途中で止まっていて不安定。 | ||
| + | |||
| + | >Log4Net は、何か問題が発生してアペンダーに書き込めない場合、黙って失敗します。 | ||
| + | > | ||
| + | > | ||
| + | |||
| + | * https:// | ||
| + | * https:// | ||
| + | * [[https:// | ||
| + | |||
| + | <code xml> | ||
| + | <?xml version=" | ||
| + | < | ||
| + | < | ||
| + | <add key=" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | これにより送信される内部ログがオンになる。System.Diagnostics.Traceため、以下を追加できます。 | ||
| + | |||
| + | <code xml> | ||
| + | < | ||
| + | ... | ||
| + | < | ||
| + | <trace autoflush=" | ||
| + | < | ||
| + | <add name=" | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | ... | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | 出力されたログにはタイムスタンプが付いていない。[[https:// | ||
| + | |||
| + | ==== ログローテーション連番 ==== | ||
| + | CountDirection:ローテの連番をどの様に振るか。 | ||
| + | * 0未満 : 常に同じ連番が使われる。デフォルト値(-1)。 | ||
| + | * 0以上 : 新たな連番が使われる。 | ||
| + | |||
| + | xxxx.log.1 というように拡張子の後ろに連番が付く。ファイル名を日パターンにしても同様。 | ||
| + | |||
| + | [[https:// | ||
| + | ==== 参照 ==== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ===== NLog ===== | ||
| + | .NET 向けのオープンソースのログツールである。 | ||
| + | |||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | ===== その他 ===== | ||
| + | [[http:// | ||
| + | > | ||
| + | > | ||
it技術/dotnet/ログ出力.1491062188.txt.gz · 最終更新: 2017/04/02 00:56 by yajuadmin
