Zum Inhalt springen

Log Datei nach Fehler durchsuchen


songoku187

Empfohlene Beiträge

Guten Morgen zusammen,

sorry das mein erster Beitrag sofort eine Frage ist aber komme gerade überhaupt nicht weiter. Mein Problem ist eigentlich recht einfach, aber irgendwie bekomme ich es nicht hin. Hier nun meine Frage

Ich möchte eine kleine Anwendung die im Prinzip nur einen Button hat und mit betätigen eine Textdatei ( LOG ) einliest und überprüft ob der String "**** ERROR" drin vorkommt falls ja soll eine E-Mail gesendet werden.

Hier mal ein snippet:


        static void Main(string[] args)

        {

            string find_error = "**** ERROR";


            StreamReader sr = new StreamReader(@"D:\test.txt");


            while (sr.Peek() != -1)

            {

                Console.WriteLine(sr.ReadLine());

                if (sr.ReadLine() == find_error)

                {

                    Console.WriteLine("Fehler gefunden!");

		    public void email();	       // Email senden

                }

            }

            sr.Close();


            Console.WriteLine("\n\nZum Beenden Enter drücken!");

            Console.ReadLine();

        }

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also die Konsolen Ausgabe erscheint bekomme den Inhalt der Datei angezeigt.

Der String steht selbst nicht alleine in einer Zeile.

Inhalt der LOG Datei:


(07.05.2012, 05:24:41.770) Client attached to server

(07.05.2012, 05:24:49.831) Client detached from server

(07.05.2012, 05:25:11.512) Client attached to server

(07.05.2012, 05:25:20.224) Client detached from server

(07.05.2012, 05:25:41.605) Client attached to server

(07.05.2012, 05:25:45.650) **** ERROR: COMM_FATALERROR[0] from <W3V1>

(07.05.2012, 05:25:50.197) Client detached from server

(07.05.2012, 05:25:55.094) **** ERROR: COMM_FATALERROR[0] from <W3V1>

Methode ("funktion") wird erstellt und dann innerhalt einer anderen Methoe aufgerufen?

Bearbeitet von songoku187
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also die Konsolen Ausgabe erscheint bekomme den Inhalt der Datei angezeigt.
Es ging mir mehr um die Meldung "Fehler gefunden!".

Der String steht selbst nicht alleine in einer Zeile.
Dann kann dein Code nicht funktionieren, weil du jede Zeile auf Gleichheit mit dem gesuchten Text prüfst. Du müsstest prüfen, ob die Zeile den gesuchten Text (ggf. an einer bestimmten Position) enthält.

Das hier

   public void email();	       // Email senden
sieht wie eine Methodendeklaration aus, wie man sie in C++ benutzen würde. Ich wundere mich, dass dein Compiler das akzeptiert, das dürfte an dieser Stelle im Code eigentlich gar nicht stehen. Ein Funktionsaufruf sähe so aus:
email();

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es ging mir mehr um die Meldung "Fehler gefunden!".

Ach so :) also die Ausgabe: "Fehler gefunden!" zeigt er nicht an.

Dann kann dein Code nicht funktionieren, weil du jede Zeile auf Gleichheit mit dem gesuchten Text prüfst. Du müsstest prüfen, ob die Zeile den gesuchten Text (ggf. an einer bestimmten Position) enthält.

Hast ja vollkommen recht kann nicht funktionieren.

Also du meinst jetzt das ich quasi erst ab dem character 28 erst suchen soll?

Weil das Format immer gleich ist.

sieht wie eine Methodendeklaration aus, wie man sie in C++ benutzen würde. Ich wundere mich, dass dein Compiler das akzeptiert, das dürfte an dieser Stelle im Code eigentlich gar nicht stehen. Ein Funktionsaufruf sähe so aus:

Ja der Aufruf ist von C++ bin gerade am Umsteigen und habe auch schon länger nicht mehr Programmiert.

Ich habe jetzt mal in der txt nur ****ERROR und es funktioniert trotzdem nicht. Da mache ich wohl etwas Grundlegendes falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Äh. Hm.

Das macht die ganze Sache ein wenig komplizierter.

Wenn irgendwo in der Zeile ein "**** Error" kommt, kommst Du nicht weit mit einer ==-Abfrage.

Du solltest dazu übergehen, entweder mit einem Regulärer Ausdruck zu arbeiten; was Dir ersteinmal die Haare zu Berge stehen lassen wird. Aber ich finde es zumindest sinnvoll, dass Du mal davon gehört hast, so, daß, wenn Du fit genug bist, Dich an das Thema erinnerst, und ggf. davon profitierst.

Oder aber -das in Deinem Falle sinnvolle- dazu übergehen, den Inhalt der Zeile zu überprüfen:

String.Contains-Methode (System)

ist da der Schlüssel zum Erfolg:


if (geleseneZeile.Contains(suchBegriff)) TuWas();
[/php]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke erst mal für den Tipp also Regex habe ich gestern mal (an)gelesen :) werde ich wohl nicht drum herum kommen.

Und an die String.Contains-Methode erinnere ich mich noch von C++ aber was ist denn in Kombination mit C# die bessere Variante oder im Verlauf die am meisten unter C# verwendet wird?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke mal für deinen einfachen fall, um nur zu prüfen, ob der string i-wo im text vorkommt ist die Contains-Methode ausreichend.

Mit regulären Ausdrücken kannst du komplexere Abfragen formulieren wie zum beispiel eine prüfung auf eine valide e-mail-adresse.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann ich so nur unterschreiben.

Wie gesagt, Du solltest es mal gehört haben. Für den Großteil der Fälle reicht ein "Contains" aus.

Aber wenn Du nach komplexeren Mustern suchst, ist eine RegEx Gold wert - vorallem, wenn Du das Konzept verstanden hast, kannst Du es in vielen Sprachen und Anwendungsgebieten einsetzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Soo habe nun einiges gelesen aber leider nicht weiter gekommen :( aber naja was solls **** happen. Ich werde mir erstmal ein komplettest TUT zu C# gönnen :D

http://www.guidetocsharp.de

ich hoffe das ich danach schlauer bin. Falls ich die Lösung habe werde ich euch natürlich darüber benachrichtigen.

Falls Ihr schon das tut kennt wäre es schön wenn ihr mir eure erfahrungen damit sagen könntet oder vieleicht ein anderes besseres empfehlen könnt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Okey das bin ich nebenbei auch am (quer)lesen ist echt gut aber war mir dann doch zuviel von der Seitenanzahl her.

Stimmt schon eigentlich ist es auch nicht mehr wie du schon sagst als die txt mit StreamReader zu lesen und dann eine abfrage mit contains(). Umso trauriger ist es das ich es dann trotzdem nicht hinbekomme, mache da wohl syntaktisch etwas falsch aber naja kann ja nicht schaden bei NULL ;) anzufangen.

Werde das bis zum WE hoffentlich gelöst haben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...