Autor Thema: Search Log  (Gelesen 2849 mal)

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Search Log
« 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 ??
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline jofa

  • Senior Mitglied
  • ****
  • Beiträge: 265
  • Geschlecht: Männlich
  • try and error !Y!
Re:Search Log
« Antwort #1 am: 03.11.03 - 15:13:14 »
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
--
MAINTANACE FREE ---
Impossible to fix. ;-)
ca. 110 Server unter Win32 und Linux ab 5.0.9a bis R6.5.5dt.
Clients: 5.0.9a, 5.0.10, 5.0.11, 5.0.12, 6.0.1CF1, 6.0.2CF2, 6.5, 6.5.1, 6.5.2, 6.5.3, 6.5.4, 6.5.5, 7.0.

Offline jofa

  • Senior Mitglied
  • ****
  • Beiträge: 265
  • Geschlecht: Männlich
  • try and error !Y!
Re:Search Log
« Antwort #2 am: 04.11.03 - 17:23:33 »
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
--
MAINTANACE FREE ---
Impossible to fix. ;-)
ca. 110 Server unter Win32 und Linux ab 5.0.9a bis R6.5.5dt.
Clients: 5.0.9a, 5.0.10, 5.0.11, 5.0.12, 6.0.1CF1, 6.0.2CF2, 6.5, 6.5.1, 6.5.2, 6.5.3, 6.5.4, 6.5.5, 7.0.

Offline jofa

  • Senior Mitglied
  • ****
  • Beiträge: 265
  • Geschlecht: Männlich
  • try and error !Y!
Re:Search Log
« Antwort #3 am: 04.11.03 - 18:40:12 »
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
--
MAINTANACE FREE ---
Impossible to fix. ;-)
ca. 110 Server unter Win32 und Linux ab 5.0.9a bis R6.5.5dt.
Clients: 5.0.9a, 5.0.10, 5.0.11, 5.0.12, 6.0.1CF1, 6.0.2CF2, 6.5, 6.5.1, 6.5.2, 6.5.3, 6.5.4, 6.5.5, 7.0.

Offline jofa

  • Senior Mitglied
  • ****
  • Beiträge: 265
  • Geschlecht: Männlich
  • try and error !Y!
Re:Search Log
« Antwort #4 am: 11.11.03 - 12:01:46 »
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
--
MAINTANACE FREE ---
Impossible to fix. ;-)
ca. 110 Server unter Win32 und Linux ab 5.0.9a bis R6.5.5dt.
Clients: 5.0.9a, 5.0.10, 5.0.11, 5.0.12, 6.0.1CF1, 6.0.2CF2, 6.5, 6.5.1, 6.5.2, 6.5.3, 6.5.4, 6.5.5, 7.0.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz