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/ログ出力.txt · 最終更新: 2023/01/24 09:46 by yajuadmin