2019-10-23に投稿

【VB.NET】log4netを使ったログ出力を試してみた

おはようございます。

VB.NETでも log4net を使ってログ出力を試してみました。

プログラムは前回のものを使用します。
【VB.NET】PostgreSQL に接続してデータ操作(追加・更新・削除)をしてみる

また、[email protected]#は下記の記事を参考にしてください。
【WPF】log4netを使ってログを出力する

Nuget でパッケージをダウンロード

NuGetパッケージ管理を表示

ソリューションエクスプローラーからプロジェクトを選択、右クリックし
「Nuget パッケージの管理」を選択します。

NuGetパッケージ管理画面

Nuget パッケージ管理画面が表示されるので、
検索窓に「log4net」を入力し、「log4net」を選択、インストールボタンをクリックします。

プレビュー画面

変更の確認ダイアログが表示されるので、「OK」ボタンをクリックします。

出力ビュー

出力ビューに「終了」が出力されればOKです。

アセンブリ設定ファイルの修正

アセンブリファイルの修正

パッケージエクスプローラーから対象のファイルを開きます。

AccemblyInfo.vb

    // log4net を利用するための設定
    //
    <Assembly: log4net.Config.XmlConfigurator(ConfigFile:="log4net.config", Watch:=True)>

設定ファイルの追加

新規ファイル追加

パッケージエクスプローラーから「追加」>「新しい項目」を選択します。

ファイル追加画面

「アプリケーション構成ファイル」を選択して「追加」ボタンをクリックします。

log4net.config

    <?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>

 

ビルドオプション

log4net.configファイルのプロパティで、
「出力ディレクトリにコピーする」を「常にコピーする」に変更します。

検索ボタンクリック時にログを出力

次の記述を追加します。

Form1.vb

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

 

ログを出力してみる

アプリケーションをデバッグ起動し、検索ボタンをクリックします。

コンソール出力にログが出力されるのを確認します。
実行ディレクトリ>log>yyyymmdd.log を確認、ログが出力されていればOKです。

まとめ

[email protected]#とほとんど同じ手順で使うことができました。

ではでは。

Originally published at www.doraxdora.com

doraxdora

IT関係の仕事をしています/1985年生まれの東京在住/便利なサービスやツール漁りや料理などが好き/2017年~ブログやってます/自分でサービスとか作ってリリースしたい/何かありましたらお気軽にDMどうぞ

Crieitは個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!

ボードとは?

関連記事

コメント