Das Notes Forum
Lotus Notes / Domino Sonstiges => Tools & Downloads => Thema gestartet von: eknori am 12.09.03 - 09:47:28
-
Hallo zusammen;
hat jemand eigentlich mal das SearchLog aus der Sandbox ( http://www-10.lotus.com/ldd/sandbox.nsf/ecc552f1ab6e46e4852568a90055c4cd/3441e2c58ee03cd185256865005eba0b?OpenDocument&Highlight=0,Search ) mal für R6 umgebaut ??
-
Hi Ulrich,
ich habe einfach eine weitere Action "Get Log R6" in der Maske definiert:
---snip---
Sub Initialize
Dim s As New notessession
Dim ws As New notesuiworkspace
Dim logdb As notesdatabase
Dim logview As notesview
Dim logdcc As notesdocumentcollection
Dim logdoc As notesdocument
Dim uidoc As notesuidocument
Dim curdoc As notesdocument
Dim item As NotesItem
Dim Lookupkey(1) As String
Dim date1 As String
' Dim tmpevents As String
Dim rtitem As notesrichtextitem
Dim searchstring As String
Dim result As Integer
Dim richStyle As NotesRichTextStyle
Set richStyle = s.CreateRichTextStyle
richStyle.FontSize = 8
richStyle.Bold = False
richStyle.Bold = False
richStyle.NotesColor = 0
richStyle.NotesFont = FONT_COURIER
result = 0
Set uidoc = ws.currentdocument
Set curdoc = uidoc.document
curdoc.removeitem("LogOutput")
Set rtitem = curdoc.CreateRichTextITem("LogOutput")
Call rtitem.AppendStyle(richStyle)
Set logdb = New notesdatabase(curdoc.mailserver(0),"log.nsf")
If Not(logdb.isopen) Then
Msgbox "Could not open log database."
Exit Sub
End If
Set logview = logdb.getview("Mail-Routing-Ereignisse")
If logview Is Nothing Then
Msgbox "Could not open view Mail Routing Events in log database."
Exit Sub
End If
Dim sdate As New notesdatetime(Today)
Call sdate.adjustday(1-Val(curdoc.days(0)))
Print sdate.timeonly
Call sdate.adjusthour(-Val(Left(Cstr(sdate.timeonly),2)))
CheckDate = Cdat(sdate.dateonly)
Print CheckDate
Stop
searchstring = "Form = """ & Curdoc.Event(0) & """"
Dim dcc As notesdocumentcollection
Set dcc = logdb.search(searchstring,sdate,0)
Print dcc.count
Set logdoc = dcc.getfirstdocument()
Do While Not(logdoc Is Nothing)
Set item = logdoc.GetFirstItem( "EventList" )
Forall v In item.Values
If Instr(1,v,curdoc.TrackText(0),5) Then
Print "Extracting log information"
' Messagebox( v )
Call rtitem.appendtext(v)
Call rtitem.addnewline(1,True)
result = result + 1
End If
End Forall
Set logdoc = dcc.getnextdocument(logdoc)
Loop
curdoc.SearchResults = result
Call curdoc.save(1,0)
curdoc.saveoptions = "0"
Call uidoc.close
Call ws.viewrefresh
Call ws.editdocument(True,curdoc)
End Sub
---snap---
So muss man nur wissen ob das zu durchsuchende Log-File mit einer R5er oder R6 Schablone erstellt ist ;-))
have fun ...
Gruss JoFa
-
Hi @all,
ich habe alles auch in einen JavaAgent überführt, läuft schneller und erlaubt Regex, allerdings rufe ich diesen ja auch einem NotesUIDocument auf und bekomme leider die Ergebnisse nicht direkt angezeigt.
Weiss jemand, wie man über einen Script-Button dieses lösen könnte ?
Gruss JoFa
-
Hi @all,
hier kommt noch der JavaAgent:
---snip---
import lotus.domino.*;
import java.util.Vector;
import java.io.*;
import jregex.*;
// von http://jregex.sourceforge.net
//import java.util.regex.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database db = agentContext.getCurrentDatabase();
Agent agent = agentContext.getCurrentAgent();
Document doc = db.getDocumentByID(agent.getParameterDocID());
String strServer = doc.getItemValueString("MailServer");
String strSearch = doc.getItemValueString("TrackText");
String strForm = doc.getItemValueString("Event");
String strLine = "========================================================================";
String strDays = doc.getItemValueString("Days");
int intDays = Integer.valueOf(strDays).intValue();
intDays = intDays * -1;
DateTime dtToday = session.createDateTime("Today");
DateTime dtNow = session.createDateTime("Today");
DateTime dtEvent = session.createDateTime("Today");
dtToday.setNow();
dtNow.setNow();
dtToday.adjustDay(intDays, true);
DbDirectory dir = session.getDbDirectory( strServer );
Database dbLog = dir.openDatabase("log.nsf");
doc.removeItem( "LogOutput" );
RichTextItem rtitem = doc.createRichTextItem("LogOutput");
RichTextStyle header = session.createRichTextStyle();
header.setBold(RichTextStyle.YES);
header.setColor(RichTextStyle.COLOR_BLACK);
header.setEffects(RichTextStyle.EFFECTS_NONE);
header.setFont(RichTextStyle.FONT_COURIER);
header.setFontSize(8);
rtitem.appendStyle(header);
rtitem.appendText(strLine);
rtitem.addNewLine();
rtitem.appendText("Suchabfrage vom: " + dtNow.getLocalTime());
rtitem.addNewLine();
rtitem.appendText(strLine);
rtitem.addNewLine();
rtitem.appendText("Server.........: " + strServer);
rtitem.addNewLine();
rtitem.appendText("Suchstring.....: " + strSearch);
rtitem.addNewLine();
rtitem.appendText("Suchabfrage ab.: " + dtToday.getLocalTime());
rtitem.addNewLine();
rtitem.appendText(strLine);
rtitem.addNewLine();
View view = db.getView("MailRoutingEvents");
String strGetSearch = "Form = \"" + strForm + "\"";
DocumentCollection dc = dbLog.search(strGetSearch, dtToday);
rtitem.appendText("Log-Einträge...: " + dc.getCount());
rtitem.addNewLine();
rtitem.appendText(strLine);
rtitem.addNewLine();
rtitem.appendText("Get Search Str.: " + strGetSearch);
rtitem.addNewLine();
rtitem.appendText(strLine);
rtitem.addNewLine();
Vector iM;
String strEvent;
int count = 0;
Pattern pSearch = new Pattern(".*" + strSearch + ".*", "i");
Document docLog = dc.getFirstDocument();
while (docLog != null) {
iM = docLog.getItemValue("EventList");
for (int i=0; i<iM.size(); i++) {
strEvent = (String)iM.elementAt(i);
Matcher mSearch = pSearch.matcher(strEvent);
if (mSearch.matches()) {
count++;
rtitem.appendText(strEvent);
rtitem.addNewLine();
}
}
docLog = dc.getNextDocument();
}
dtNow.setNow();
rtitem.appendText(strLine);
rtitem.addNewLine();
rtitem.appendText("Suchabfrage END: " + dtNow.getLocalTime());
rtitem.addNewLine();
doc.appendItemValue("SearchResults", count);
doc.save(true, true);
} catch(Exception e) {
e.printStackTrace();
}
}
}
---snap---
Meine Weiterentwicklung basiert auf dem SearchLog aus der Sandbox (Link s.o.)
Gruss Jofa
-
Hi @all,
ich habe die fertige DB zur Auswertung von R5er und R6er Log mit Java-Agenten fertig, vielleicht hat ja jemand Interesse (Siehe Anhang).
Bin über jedes Feedback dankbar ;-)
Gruss JoFa