Files
FileManager/[NET2]ArinLog/Class1.vb
2019-08-04 20:13:56 +09:00

91 lines
2.8 KiB
VB.net

Public Class ArinLog
Dim file As System.IO.FileInfo
Dim buffer As System.Text.StringBuilder
Dim Datatable As DataTable
Public Event RaiseMsg(time As String, gubun As String, msg As String)
Public Enum ETYPE
STARTUP
SHUTDOWN
[ERROR]
NORMAL
TCP
KEYBOARD
MOUSE
PROCESS
USERCONTROL
BARCODE
VISION
PRINTER
OCR
OCRERROR
MOTION
SQL
RS232
End Enum
Dim setdate As String = ""
Public FlushTime As Date = Now '//실기록완료한시간
Public Function GetBuffer() As String
Return buffer.ToString
End Function
Public Sub New()
setdate = Now.ToString("yyMMdd")
Me.file = New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\LOG\" & setdate & ".txt")
If file.Directory.Exists = False Then file.Directory.Create()
buffer = New System.Text.StringBuilder
Datatable = New DataTable
Datatable.Columns.Add("시간")
Datatable.Columns.Add("형태")
Datatable.Columns.Add("메세지")
End Sub
Public Sub Add(bodymsg As String, Optional autof As Boolean = False)
Add(ETYPE.NORMAL, bodymsg, autof)
End Sub
Public Sub Add(TYPE As ETYPE, bodymsg As String, Optional autof As Boolean = False)
Add(TYPE.ToString(), bodymsg, autof)
End Sub
Public Sub Add(TYPE As String, bodymsg As String, Optional autof As Boolean = False)
If setdate <> Now.ToString("yyMMdd") Then '//날짜가 달라지면 파일을 변경한다.
Flush()
setdate = Now.ToString("yyMMdd")
Me.file = New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\LOG\" & setdate & ".txt")
End If
Dim nowdate As Date = Now
Dim m As String = nowdate.ToString("yy-MM-dd HH:mm:ss") & "." & nowdate.Millisecond.ToString("000") & vbTab & TYPE.ToString.PadRight(20) & vbTab & bodymsg
buffer.AppendLine(m)
If autof OrElse buffer.Length > 100 OrElse TYPE = "ERROR Then '//에러발생시에는 바로 플러싱" Then
Flush()
End If
'//메세지발생함
RaiseEvent RaiseMsg(nowdate.ToString("yy-MM-dd HH:mm:ss") & "." & nowdate.Millisecond.ToString("000"), TYPE, bodymsg)
End Sub
Public Function Flush() As Boolean
Try
My.Computer.FileSystem.WriteAllText(file.ToString, buffer.ToString, True)
buffer = New System.Text.StringBuilder
FlushTime = Now
Return True
Catch ex As Exception
Return False
End Try
End Function
Public Overrides Function toString() As String
Try
Return My.Computer.FileSystem.ReadAllText(file.FullName)
Catch ex As Exception
Return ""
End Try
End Function
End Class