|
|||||
パソコンを起動した時のログやユーザがログインした時のログを出力するサンプルです。 タスク・ケジュール(スタート→コントロールパネル→タスク)やスタートアップに ログ出力するプログラムを登録する事で簡単に実現出来ます。タスク・ケジュールは、 「コンピュータ起動時」や「ログオン時」という指定が出来ます。 つまり、プログラムが起動された時がログを出力するタイミングですのでログを ファイルに出力すれば良い事になります。 ログ出力する関数はlog4net等を使用せず自力で作った方が簡単です。 パソコン起動ログやログインログや簡単に実現出来ますが、 ログアウトログやシャットダウンログは難しいです。 たぶん、Windowsサービスとして実装しないと実現出来ないかもしれません。 Windowsサービスとして実装したツールはこちらです。 PC状況メール通知(PcEvMail)はPC起動/終了/ログイン/ログアウト時にメール通知するツールです。 ★フォームモジュール(Form1.vb) Public Class Form1 Private Sub Form1_Load( _ ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load WriteTraceLog("パソコンが起動されました。") ' WriteTraceLog("ユーザがログインしました。") End Sub ''' <summary> ''' ログ出力 ''' </summary> ''' <param name="msg">メッセージ</param> ''' <param name="ex">Exception(無指定の場合はメッセージのみ出力)</param> ''' <remarks></remarks> Private Shared Sub WriteTraceLog( _ ByVal msg As String, Optional ByVal ex As Exception = Nothing) Try ' ログフォルダ名作成 Dim dt As DateTime = Now Dim logFolder As String = System.AppDomain.CurrentDomain.BaseDirectory & "Log" ' ログフォルダ名作成 System.IO.Directory.CreateDirectory(logFolder) ' ログファイル名作成 Dim logFile As String = logFolder & "\TraceLog" & dt.ToString("dd") & ".log" ' 翌日分のログファイル削除(1ヶ月分のログファイルしか保存しないようにするため) Dim logNext As String = _ logFolder & "\TraceLog" & dt.AddDays(1).ToString("dd") & ".log" System.IO.File.Delete(logNext) ' ログ出力文字列作成 Dim logStr As String logStr = dt.ToString("yyyy/MM/dd HH:mm:ss") & vbTab & msg If ex Is Nothing = False Then logStr = logStr & vbCrLf & ex.ToString End If ' Shift-JISでログ出力 Dim sw As IO.StreamWriter = Nothing Try sw = New IO.StreamWriter( _ logFile, True, System.Text.Encoding.GetEncoding("Shift-JIS")) sw.WriteLine(logStr) Catch ex2 As Exception Finally If sw Is Nothing = False Then sw.Close() End Try Catch ex2 As Exception End Try End Sub End Class |