tag:crieit.net,2005:https://crieit.net/tags/log4net/feed 「log4net」の記事 - Crieit Crieitでタグ「log4net」に投稿された最近の記事 2019-10-23T09:50:42+09:00 https://crieit.net/tags/log4net/feed tag:crieit.net,2005:PublicArticle/15500 2019-10-23T09:50:42+09:00 2019-10-23T09:50:42+09:00 https://crieit.net/posts/VB-NET-log4net 【VB.NET】log4netを使ったログ出力を試してみた <p>おはようございます。</p> <p>VB.NETでも log4net を使ってログ出力を試してみました。</p> <p>プログラムは前回のものを使用します。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/blog/2018/01/25/post-3769/" target="_blank" rel="noopener noreferrer" data-blogcard="1">【VB.NET】PostgreSQL に接続してデータ操作(追加・更新・削除)をしてみる</a></p> <p>また、WPF@C#は下記の記事を参考にしてください。<br /> <a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/blog/2017/06/10/post-1210/" target="_blank" rel="noopener noreferrer" data-blogcard="1">【WPF】log4netを使ってログを出力する</a></p> <h2 id="Nuget でパッケージをダウンロード"><a href="#Nuget+%E3%81%A7%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89">Nuget でパッケージをダウンロード</a></h2> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net000.jpg" alt="NuGetパッケージ管理を表示" /></p> <p>ソリューションエクスプローラーからプロジェクトを選択、右クリックし<br /> 「Nuget パッケージの管理」を選択します。</p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net001.jpg" alt="NuGetパッケージ管理画面" /></p> <p>Nuget パッケージ管理画面が表示されるので、<br /> 検索窓に「log4net」を入力し、「log4net」を選択、インストールボタンをクリックします。</p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net002.jpg" alt="プレビュー画面" /></p> <p>変更の確認ダイアログが表示されるので、「OK」ボタンをクリックします。</p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net003.jpg" alt="出力ビュー" /></p> <p>出力ビューに「終了」が出力されればOKです。</p> <h2 id="アセンブリ設定ファイルの修正"><a href="#%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%BF%AE%E6%AD%A3">アセンブリ設定ファイルの修正</a></h2> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net004.jpg" alt="アセンブリファイルの修正" /></p> <p>パッケージエクスプローラーから対象のファイルを開きます。</p> <p>AccemblyInfo.vb</p> <pre><code> // log4net を利用するための設定 // <Assembly: log4net.Config.XmlConfigurator(ConfigFile:="log4net.config", Watch:=True)> </code></pre> <h2 id="設定ファイルの追加"><a href="#%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E8%BF%BD%E5%8A%A0">設定ファイルの追加</a></h2> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net005.jpg" alt="新規ファイル追加" /></p> <p>パッケージエクスプローラーから「追加」>「新しい項目」を選択します。</p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net006.jpg" alt="ファイル追加画面" /></p> <p>「アプリケーション構成ファイル」を選択して「追加」ボタンをクリックします。</p> <p>log4net.config</p> <pre><code> <?xml version="1.0" encoding="utf-8" ?> <!-- [log4net.config] --> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <appSettings> <!-- log4net 内部のデバッグメッセージを出力 --> <add key="log4net.Internal.Debug" value="true" /> </appSettings> <log4net> <!-- コンソール出力用のアペンダ --> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <!-- 出力文字列のフォーマット --> <layout type="log4net.Layout.PatternLayout"> <!--^「日付、スレッド、レベル、logger名、メッセージ」が出力^--> <!--^「%-5p」というのは5文字以下の場合、右側に空白を入れる設定^--> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> <!-- ファイル出力用のアペンダ(日付でローテーション) --> <appender name="DailyFileAppender" type="log4net.Appender.RollingFileAppender"> <!-- ログファイルの切替 { サイズ: Size, 日付: Date } --> <param name="RollingStyle" value="Date" /> <!-- ファイル名 --> <param name="File" value="log/" /> <!-- ファイル名に付加する日付パターン --> <param name="DatePattern" value='yyyyMMdd".log"' /> <!-- ファイル名の固定 --> <param name="StaticLogFileName" value="false" /> <!-- ファイル書き込み { 追記: true, 上書き: false } --> <param name="AppendToFile" value="true" /> <!-- 出力文字列のフォーマット --> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %date{yyyy/MM/dd HH:mm:ss, fff} [%thread] %logger - %message%newline" /> </layout> </appender> <!-- デフォルトの出力設定 --> <root> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="DailyFileAppender" /> </root> </log4net> </configuration> </code></pre> <p> </p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2018/01/VbLog4net007.jpg" alt="ビルドオプション" /></p> <p>log4net.configファイルのプロパティで、<br /> 「出力ディレクトリにコピーする」を「常にコピーする」に変更します。</p> <h2 id="検索ボタンクリック時にログを出力"><a href="#%E6%A4%9C%E7%B4%A2%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E6%99%82%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%92%E5%87%BA%E5%8A%9B">検索ボタンクリック時にログを出力</a></h2> <p>次の記述を追加します。</p> <p>Form1.vb</p> <pre><code>Form1.vb ' ライブラリのインポート import log4net; public Class Form1 ' ログ出力用インスタンスの宣言 Private logger As ILog = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType) . . . 省略 ''' <summary> ''' 検索ボタンクリックイベント. ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click logger.Info("MainWindows 検索ボタンクリック") search() End Sub </code></pre> <p> </p> <h2 id="ログを出力してみる"><a href="#%E3%83%AD%E3%82%B0%E3%82%92%E5%87%BA%E5%8A%9B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B">ログを出力してみる</a></h2> <p>アプリケーションをデバッグ起動し、検索ボタンをクリックします。</p> <p>コンソール出力にログが出力されるのを確認します。<br /> 実行ディレクトリ>log>yyyymmdd.log を確認、ログが出力されていればOKです。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>WPF@C#とほとんど同じ手順で使うことができました。</p> <p>ではでは。</p> doraxdora tag:crieit.net,2005:PublicArticle/14779 2019-02-04T10:17:32+09:00 2019-02-04T10:20:55+09:00 https://crieit.net/posts/WPF-log4net 【WPF】log4netでログ出力をする方法を試す <p>早速 log4net を使ってログ出力を試してみました。</p> <p>プログラムは前回のものを使用します。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/blog/2017/06/09/post-1184/" target="_blank" rel="noopener" data-blogcard="1">WPFでSQLiteを使ってデータを DataGrid に表示してみる</a></p> <p>Nuget によりパッケージをダウンロード<br /> 前回と同様、 Nuget でパッケージを入手、インストールします。</p> <p><img src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net000.jpg" alt="プロジェクトのコンテキストメニュー" /></p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net000.jpg"><img class="wp-image-1220 size-full" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net000.jpg" alt="プロジェクトのコンテキストメニュー" /></a></p> <p>ソリューションエクスプローラーからプロジェクトを選択、右クリックし<br /> 「Nuget パッケージの管理」を選択します。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net001.jpg"><img class="wp-image-1221 size-full" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net001.jpg" alt="Nuget パッケージ管理画面" /><br /> </a></p> <p>Nuget パッケージ管理画面が表示されるので、<br /> 検索窓に「log4net」を入力し、「log4net」を選択、インストールボタンをクリックします。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net002.jpg"><img class="size-full wp-image-1212" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net002.jpg" alt="確認画面" /><br /> </a></p> <p>変更の確認ダイアログが表示されるので、<br /> 「OK」ボタンをクリックします。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net003.jpg"><img class="size-full wp-image-1213" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net003.jpg" alt="出力ビュー" /><br /> </a></p> <p>出力ビューに「終了」が出力されればOKです。<br /> アセンブリ設定ファイルの修正<br /> <a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net004.jpg"><img class="wp-image-1214 size-full" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net004.jpg" alt="プロジェクトのプロパティ" /><br /> </a></p> <p>次のファイルに記述を追加します。</p> <p>App.config に log の出力設定を記述する方法と、<br /> 別ファイルに記述する方法があるようですが、今回は別ファイルとします。</p> <p>AccemblyInfo.cs</p> <pre><code>// log4net を利用するための設定 // [assembly: log4net.Config.XmlConfigurator(ConfigFile = "../../log4net.config", Watch = true)] </code></pre> <p>設定ファイルの追加<br /> log4net.config を新規作成</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net005.jpg"><img class="wp-image-1215 size-full" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net005.jpg" alt="新しい項目の追加" /><br /> </a></p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net006.jpg"><img class="size-full wp-image-1216" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net006.jpg" alt="アプリケーション構成ファイルの作成" /><br /> </a></p> <p>log4net.config</p> <pre><code><?xml version="1.0" encoding="utf-8" ?> <!-- [log4net.config] --> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <appSettings> <!-- log4net 内部のデバッグメッセージを出力 --> <add key="log4net.Internal.Debug" value="true" /> </appSettings> <log4net> <!-- コンソール出力用のアペンダ --> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> <!-- 出力文字列のフォーマット --> <layout type="log4net.Layout.PatternLayout"> <!--^「日付、スレッド、レベル、logger名、メッセージ」が出力^--> <!--^「%-5p」というのは5文字以下の場合、右側に空白を入れる設定^--> <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" /> </layout> </appender> <!-- ファイル出力用のアペンダ(日付でローテーション) --> <appender name="DailyFileAppender" type="log4net.Appender.RollingFileAppender"> <!-- ログファイルの切替 { サイズ: Size, 日付: Date } --> <param name="RollingStyle" value="Date" /> <!-- ファイル名 --> <param name="File" value="log/" /> <!-- ファイル名に付加する日付パターン --> <param name="DatePattern" value='yyyyMMdd".log"' /> <!-- ファイル名の固定 --> <param name="StaticLogFileName" value="false" /> <!-- ファイル書き込み { 追記: true, 上書き: false } --> <param name="AppendToFile" value="true" /> <!-- 出力文字列のフォーマット --> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %date{yyyy/MM/dd HH:mm:ss, fff} [%thread] %logger - %message%newline" /> </layout> </appender> <!-- デフォルトの出力設定 --> <root> <level value="ALL" /> <appender-ref ref="ConsoleAppender" /> <appender-ref ref="DailyFileAppender" /> </root> </log4net> </configuration> </code></pre> <p>検索ボタンクリック時にログを出力<br /> 次の記述を追加します。</p> <pre><code>using log4net; ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); logger.Info("MainWindows 検索ボタンクリック"); </code></pre> <p> </p> <p>MainWindow.xaml.cs(クリックイベントのみ抜粋)</p> <pre><code>using log4net; /// <summary> /// 検索ボタンクリックイベント. /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void search_button_Click(object sender, RoutedEventArgs e) { ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); logger.Info("MainWindows 検索ボタンクリック"); using (var conn = new SQLiteConnection("Data Source=SampleDb.sqlite")) { conn.Open(); // 猫データマスタを取得してコンボボックスに設定する using (DataContext con = new DataContext(conn)) { String searchName = this.search_name.Text; String searchKind = (this.search_kind.SelectedValue as Kind).KindCd; // データを取得 Table<Cat> tblCat = con.GetTable<Cat>(); // サンプルなので適当に組み立てる IQueryable<Cat> result; if (searchKind == "") { // 名前は前方一致のため常に条件していしても問題なし result = from x in tblCat where x.Name.StartsWith(searchName) orderby x.No select x; } else { result = from x in tblCat where x.Name.StartsWith(searchName) &amp; x.Kind == searchKind orderby x.No select x; } this.dataGrid.ItemsSource = result.ToList(); } conn.Close(); } } </code></pre> <p> <br /> ログを出力してみる<br /> アプリケーションをデバッグ起動します。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net007.jpg"><img class="size-full wp-image-1217" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net007.jpg" alt="サンプルアプリ起動" /><br /> </a></p> <p>検索ボタンをクリックします。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net008.jpg"><img class="size-full wp-image-1218" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net008.jpg" alt="コンソール出力" /><br /> </a></p> <p>コンソール出力にログが出力されるのを確認します。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net009.jpg"><img class="size-full wp-image-1219" src="https://www.doraxdora.com/wp-content/uploads/2017/06/WpfLog4net009.jpg" alt="ログファイルの出力" /><br /> </a></p> <p>実行ディレクトリ>log>yyyymmdd.log が出力されていることを確認します。</p> <p>ひとまずここまで。<br /> まとめ<br /> Javaで log4j を使っていたので、割とすんなりいきました。<br /> それにしても便利ですね。</p> <p>次回(未定)はリソースの外部ファイル化に戻ると思います。</p> <p>ではでは。</p> <p> </p> doraxdora