|
PC起動ログやログインログを出力するサンプル(VB.NET)

|
パソコンを起動した時のログやユーザがログインした時のログを出力するサンプルです。
タスク・ケジュール(スタート→コントロールパネル→タスク)やスタートアップにログ出力するプログラムを
登録する事で簡単に実現出来ます。タスク・ケジュールは、「コンピュータ起動時」や「ログオン時」という
指定が出来ます。つまり、プログラムが起動された時がログを出力するタイミングですのでログをファイルに
出力すれば良い事になります。ログ出力する関数はlog4net等を使用せず自力で作った方が簡単です。
パソコン起動ログやログインログや簡単に実現出来ますが、ログアウトログやシャットダウンログは難しいです。
たぶん、Windowsサービスとして実装しないと実現出来ないかもしれません。
Windowsサービスとして実装したツールはこちらです。
PC状況メール通知(PcEvMail)はPC起動/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