Log4Net設定 MAXファイルサイズ及び日単位で切替え

Log4Netは便利なログライブラリです。
最近は設定のやり方もネット上に増えて来ましたが、自分も残しておきたいと思います。

1 .Log4Netのダウンロード

ダウンロードサイトから取得します。zipファイルになっているのでダウンロード後に解凍します。

2 .参照の追加でLog4Net.dllをプロジェクトに読み込む

ダウンロードしたファイルを解凍すると.NETFlameWorkのバージョン毎にフォルダ分けされているので、環境に合ったdllを読み込みます。

3. AssemblyInfo.vbに設定情報ファイルの扱い方を記述する。

AssemblyInfo.vbは、VisualStudio2010のVBではMy Project内にあります。
ファイルの一番最後に以下のように記述します。

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="log4net.config", Watch:=True)>

設定の意味は・・・
ConfigFile : 設定ファイルを「log4net.config」として、カレントフォルダ直下に配置
Watch:設定ファイルの変更監視の有無

4. log4net.configファイルに振る舞いを記述する。

log4net.configを作成します。

以下では、日単位または1MBを超えた場合も新規にログファイルを用意します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <log4net>
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <File value=".\Log\SystemLog" />
  <appendToFile value="true" />
  <rollingStyle value="composite" />
  <staticLogFileName value="false" />
  <datePattern value='"."yyyy-MM-dd".log"' />
  <MaxSizeRollBackups value="20" />
  <MaximumFileSize value="1MB" />
  <layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
  </appender>
  <root>
   <level value="INFO" />
   <appender-ref ref="RollingLogFileAppender" />
  </root>
 </log4net>
</configuration>

各パラメタの意味は・・・
File = ログを出力するパスを指定
appendToFile = 追記モードの設定
   True:追記
   False:上書き
rollingStyle = ログを新規ファイルに切替える条件を指定します。
   Once :プログラム実行毎に切換
   Size:MaximumFileSize で指定したサイズに達した場合に切換
   Date:日が変わる毎に切換
   Composite:SizeとDateを合わせた条件で切換
staticLogFileName = ログファイル名を固定にするかを指定
   True:ファイル名固定
   false:rollingStyle とdatePatternに基づいたファイル名
datePattern =rollingStyleがdateまたはCompositeの際にファイル名に付与される文字列。
MaxSizeRollBackups = ファイルを切替えるマックス数。無限にする場合はマイナスを指定
MaximumFileSize  = rollingStyle がSizeまたはCompositeの時の最大ファイルサイズ。
   ファイルサイズを超えると、以下の様なファイル名で作成されていきます。
   SystemLog.2013-05-27.log   ←1ファイル目
   SystemLog.2013-05-27.log.1  ←2ファイル目

5.プログラム内から書いてみる。

Public Enum LogLevel
   INFO
   WARNING
   ERR
   FATAL
End Enum

Public Class LogUtil
   ‘Log4netオブジェクトの宣言
   Private Shared _log As log4net.ILog _
      = log4net.LogManager.GetLogger( _
      System.Reflection.MethodBase.GetCurrentMethod.DeclaringType)

‘書込
Public Shared Sub Write( _
   ByVal msg As String, _
   ByVal level As LogLevel, Byval ex As Exception)

   Select Case level
      Case LogLevel.INFO
         _log.Info(msg)

      Case LogLevel.WARNING
         _log.Warn(msg, ex)

      Case LogLevel.ERR
         _log.Error(msg, ex)

      Case LogLevel.FATAL
         _log.Fatal(msg, ex)

   End Select

   End Sub

End Class

SQLServer2008R2 Expressへの接続が遅い (VB6 + ADO)

環境
Windows7Pro 32bit SP1
SQLServer2008R2 Express SP2
VB6 SP6

今時VB6も無いように思いますが、とあるリプレースで上記環境でのシステムを作りました。

とりあえず動作はするのですが、データベースの接続が遅い。繋げるたびに3~5秒もかかってる・・・
さすがにまずいので対応の為、いろいろいじったところ以下のようにしたら速くなりました。
ちなみに接続はネットワーク越しではなくローカルでの接続です。
また、接続インスタンスは「既定のインスタンス」です。(SQLEXPRESSが付かない)

1.SQLServer構成マネージャーを開きます。
[スタート]→[すべてのプログラム]→[Microsoft SQL Server 2008 R2]→[構成ツール]→[SQL Server構成マネージャー]

SQLServer構成マネージャー

2.「SQLServerネットワークの構成」の「MSSQLSERVERのプロトコル」を見る。
(最初はTCP/IPが無効になっている。)

SQLServer構成マネージャー2

3.TCP/IPを有効にする。
右クリックで「有効化」を選択します。

SQLServer構成マネージャー4

確認メッセージが出るのでOKボタンを押す。

SQLServer構成マネージャー3

4.SQL Serverサービスの再起動
引続き構成マネージャーの「SQL Serverのサービス」からSQLServerを再起動します。
右クリックで「再起動」を選択します。

SQLServer構成マネージャー5

以上の設定で速くなりました。

この設定はネットワーク越しに接続する際のものかと思っていたので盲点でした。
VB6+ADOだからこうなのか、それともまったく固有の環境の問題なのかは不明です。

WindowsUpdateのKB2670838をインストール後にブルースクリーン頻発

KB2670838を何気に適用した後、ブルースクリーンがでまくりです。
環境はWindows7 64bit これまでのサービスパック及びアップデートは全てあたっています。
IE9をいじっている時、またはVirtualPC2007をあげた時などにブルースクリーンになりました。

マイクロソフトのサイトには次のように書かれています。

この更新プログラムは、次のコンポーネントのパフォーマンスや機能を改善します。
Direct2D
DirectWrite
Direct3D
Windows Imaging Component (WIC)
Windows Advanced Rasterization Platform (WARP)
Windows アニメーション マネージャー (WAM)
XPS ドキュメント API
H.264 Video Decoder
JPEG XR コーデック

いろいろと描画に関わるようなもののようですね。
ネットで調べても、ちょこちょこと不具合報告が見られます。
というわけで、しばらく様子見。

ちなみに自分はアンインストールではなく、システムの復元で戻しました。
システムの復元用プログラムの起動方法
・スタートボタンクリック → すべてのプログラム → アクセサリ → システムツール → システムの復元を選択

復元ポイントから、KB2670838の適用前のものを選びます。きれいに戻ります。

SQLServer2008 R2 Express のSP適用時のバージョン情報

先日、マイクロソフトDownload CenterからSQLServer2008 R2 Express SP1をダウンロードしました。
Microsoft SQL Server 2008 R2 Express Service Pack1
ダウンロードしたファイルは「SQLEXPRWT_x86_JPN.exe」です。

インストール後のバージョンは「10.51.2500.0」
つまりSP1適用後のバージョン番号です。

次にSP2をダウンロードしました。
Microsoft SQL Server® 2008 R2 Service Pack 2
ダウンロードしたファイルは「SQLServer2008R2SP2-KB2630458-x86-JPN.exe」です。

SP2適用後のバージョンは「10.52.4000.0」でした。

.NET FlameWork 対応OS

あれ? このOSには .NET FlameWorkはいくつまで対応してるの?
といった事がたま~にありますね。というわけでサーバー系OS以外の簡易一覧です。

Windows 8 Windows 7 Windows Vista Windows XP Windows 2000
4.5 ◎ (標準) ◎ (SP2)
4.0 ◎ (※1) ◎ (※1) ◎ (※1)(SP1) ◎(SP3)
3.5 ◎ (標準) ◎ (SP3)
3.0 ◎ (標準) ◎ (SP3)
2.0 ◎ (SP4)
1.1 ◎ (SP4)
1.0 ◎ (SP4)

※1: 4.5との共存は不可

SpiderOakのアンインストール

環境:Windows7 64bit

SpiderOakのクライアントソフトをWindows7にインストールしたのですが、どうもうまくバックアップが行われない状態になりました。
ブラウザからデバイス名を確認したのですが、デバイス名すら反映されていない様子。

一度アンインストールして、再度インストールしてみました。
ところが、前回の情報が残っていて、新規インストール時に出てきたユーザー名とパスワードの入力や、その後のデバイス名の登録画面が出てこないまま、メイン画面がいきなり表示されてしまう・・・。
別に問題にならない人も多いのかもしれないですが・・・

で、どこに残っているのか探してみると、

C:\Users\[ユーザー名]\AppData\Roaming\SpiderOak\

にありました。
このSpiderOakフォルダをソフトをアンインストール後に丸ごと削除。
その後、もう一度インストールすると今度はデバイス名の登録が出来る状態になりました。

VBのWithEventで、DLLのイベントを発生を受け取る。

VisualBasicには幸せになれる機能がいくつもありますが、WithEvent、RiseEventもその一つでしょうか。
WithEventはイベントの発生をお手軽に捕捉できるので便利ですね。

なんらかの外部DLLでの使用例:


Public Class SamplClass

  Private WithEvents _evaSystem As EvaSystemLib '定義

  Sub New()
    _evaSystem = New EvaSystemLib() ’インスタンス化
  End Sub

  'イベント
  Private Sub ModeChange_Event(ByVal sender As Object, _
                 ByVal e As EvaSystemLib.EventArgs) _
                 Handles _evaSystem.ModeChanges

     If (e.Mode = 666) Then
        Start_Beast() 
     End If

  End Sub
End Class