andressk
asked on
Script to search error string
Hi experts,
I´m working on a script to monitor logs that contains a specific string, it is working fine, but now I need that it shows the date and hour when it finds an error on the message, also, it must include all the text of the error.
Can you help me with it please?
This is the script:
I´m working on a script to monitor logs that contains a specific string, it is working fine, but now I need that it shows the date and hour when it finds an error on the message, also, it must include all the text of the error.
Can you help me with it please?
This is the script:
'/file: [required] This is the UNC location for the file to be searched.
' ${Date} is a wildcard you can put anywhere in the filename to indicate the datestamp(current date) as part of the filename.
' * ${Date} must be used with strDateFormat!!
' Example: /file:"//myserver/myshare$/myfile.txt" or /file:"${IP}/myshare/myfile.txt"
'----------------------------------------------------------------------------------------------------------
'/search: [required] This is the string to be searched for in the filename.\
'Example: /search:"error" or /search:"failed"
'----------------------------------------------------------------------------------------------------------
'DateFormat: [only required if used with ${Date} in file] This is the configuration for the format your datestamps are in.
strDateFormat = "yyyy_mm_dd"
' Usage:
' yyyy - 4 digit year
' yy - 2 digit year
' mm - 2 digit month
' m - 1 digit month
' dd - 2 digit day
' d - 1 digit day
' Seperators: "-", ".", "_", "/"
'Example: strDateFormat = "mm-dd-yyyy" or strDateFormat = "yy_m_d"
'----------------------------------------------------------------------------------------------------------
'FailIf: [optional] Specify to fail the check if the search string is found or not found
strFailIf = "found"
' Usage:
' found
' not found
'Example: strFailIf = "found" or strFailIf = "not found"
'#############################################################
strFileName = Wscript.Arguments.Named("file") 'Get file name from argument
If strFileName = "" Then
Wscript.Echo "Message: You must specify a File Name like this: /file:""blah.txt"""
Wscript.Quit(4)
End If
strSearch = Wscript.Arguments.Named("search") 'Get search string form argument
If strSearch = "" Then
Wscript.Echo "Message: You must specify a string to search for like this: /search:""ERROR"""
Wscript.Quit(4)
End If
If strFailIf="" Then strFailIf="found" End If
If (strFailIf="found") Then
strFound=3
strNotFound=0
ElseIf (strFailIf="notfound" or strFailIf="not found") Then
strFound=0
strNotFound=3
Else
strFound=4
strNotFound=4
Wscript.Echo "Message: ERROR, set strFailIf"
Wscript.Quit(4)
End If
yyyy = Datepart("yyyy",Date())
yy = Right(yyyy, 2)
m = Datepart("m",Date())
mm = Right("0" & m, 2)
d = Datepart("d",Date())
dd = Right("0" & d, 2)
If (InStr(1,strFileName,"${Date}",1) <> 0) Then
If (InStr(1,strFileName,"${Date}",1) <> 0 AND strDateFormat <> "") Then
strDateFormat = replace(strDateFormat, Space(1), " & Space(1) & ")
strDateFormat = replace(strDateFormat, "_", " & ""_"" & ")
strDateFormat = replace(strDateFormat, "/", " & ""/"" & ")
strDateFormat = replace(strDateFormat, "-", " & ""-"" & ")
strDateFormat = replace(strDateFormat, ".", " & ""."" & ")
strFileName = Replace(strFileName,"${Date}",eval(strDateFormat),1,-1,1)
Else
Wscript.Echo "Message: Error with ${Date} and strDateFormat. Please review instructions at top of script."
Wscript.Quit(4)
End If
End If
strPattern = strSearch
Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExists("temp") Then
objFSO.CreateFolder("temp")
End If
PrevLogFile = "temp\" & strSearch & "-" & mm & "_" & dd-1 & "_" & yyyy & ".txt"
If objFSO.FileExists(PrevLogFile) Then
set objPrevLogFile = objFSO.GetFile(PrevLogFile)
objPrevLogFile.Delete
End If
PreviousFinds = 0
LogFile = "temp\" & strSearch & "-" & mm & "_" & dd & "_" & yyyy & ".txt"
If objFSO.FileExists(LogFile) Then
Set objLog = objFSO.OpenTextFile(LogFile,1, True)
If (IsEmpty(objLog) = True ) Then PreviousFinds = 0 End If
PreviousFinds = objLog.ReadAll
End If
If objFSO.FileExists( strFileName ) Then
Set objFile = objFSO.GetFile(strFileName)
If( IsEmpty( objFile ) = True ) Then
WScript.Echo "Message: OBJECT NOT INITIALIZED"
WScript.Echo "Statistic: 0"
WScript.Quit(4)
End If
else
WScript.Echo "Message: The file """ & strFileName & """ was not found!<BR>This could indicate that the file does not exist or you do not have the correct credentials for monitoring. <BR>"
WScript.Echo "Statistic: 0"
WScript.Quit(strNotFound)
End If
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = strPattern
objRegEx.IgnoreCase = True
Set objReadFile = objFSO.OpenTextFile(strFileName, ForReading)
x=1
Do Until objReadFile.AtEndOfStream
strSearchString = objReadFile.ReadLine
Set colMatches = objRegEx.Execute(strSearchString)
If colMatches.Count > 0 Then
For Each strMatch in colMatches
If int(x) > int(PreviousFinds) Then
Wscript.Echo "Statistic: " & PreviousFinds+1
Wscript.Echo "Message: New search for """ & strSearch & """ was found: " & strSearchString
Set objLog = objFSO.OpenTextFile(LogFile, 2, True)
objLog.WriteLine(PreviousFinds+1)
objLog.Close
Wscript.Quit(StrFound)
End If
x=x+1
Next
End If
Loop
If int(x) >1 Then
Wscript.Echo "Statistic: " & PreviousFinds
Wscript.Echo "Message: New search for """ & strSearch & """ was found, but previous searches did find """ & strSearch & """."
Wscript.Quit(StrFound)
End If
Wscript.Echo "Statistic: " & PreviousFinds
Wscript.Echo "Message: Search for """ & strSearch & """ was not found."
Wscript.Quit(strNotFound)
objReadFile.Close
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.