.titleBar { margin-bottom: 5px!important; }

HowTo - Spandsp-Ergebnis in log-Datei

Dieses Thema im Forum "Asterisk Allgemein" wurde erstellt von zeckrich, 5 Jan. 2007.

  1. zeckrich

    zeckrich Neuer User

    Registriert seit:
    20 Juni 2006
    Beiträge:
    72
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    habe mich in der Vergangenheit mit Asterisk, Spandsp und Fax auseinandersetzen dürfen.
    Und um dies gleich zu Anfang klar zu stellen, ich halte nicht viel von dieser Lösung.
    Nichts desto trotz musste ich mir etwas einfallen lassen, um einen gewissen Status zu loggen. Ergebnis war die Ausgabe der Anzahl von übertragenen Seiten in eine externe Datei, welche im weiteren z.B. aus dem Wählplan oder einem externen Skript zur Fehlerkontrolle eingesetzt werden kann.
    Achso, das ganze ist natürlich nur für Selbstkompilierer :lamer:
    Hierfür waren ein paar Änderungen in den Quellen von spandsp notwendig, welche nun folgen:

    Alle Änderungen werden in der Datei <spandspsrc>/src/t30.c getätigt.
    Zuerst mit beliebigem editor öffnen. Dann die Routine static void process_rx_mcf(irgendwelcheparameter) suchen.
    Ganz zu Anfang dieser Routine folgende Zeilen einfügen:

    FILE *logf;
    logf = fopen("/var/log/asterisk/faxout.log","a+");


    Somit wird der Pfad zur log-Datei definiert. Dieser kann natürlich beliebig ans System angepasst werden.
    Nun kommt im Originalcode ein Switch->Case Zweig. Nach der Zeile
    span_log(&s->logging, SPAN_LOG_FLOW, "Success - delivered %d pages\n", stats.pages_transferred);
    ist folgendes hinzuzufügen:
    fprintf(logf, "%s;%d\n", s->tx_file, stats.pages_transferred);
    fflush(logf);

    So wird die Zahl übertragener Seiten geschrieben. Diese Zeile kommt in zwei aufeinanderfolgenden case-Zweigen vor, habe den neuen Code in jedem der Beiden hinzugefügt.

    Nach der Zeile
    span_log(&s->logging, SPAN_LOG_FLOW, "Unexpected MCF received in state %d\n", s->state);
    wird folgendes angefügt:
    fprintf(logf, "%s;0\n", s->tx_file);
    fflush(logf);


    Nun fehlt als letztes das saubere Schließen der log-Datei. Hierfür lediglich vor der letzten gescheiften Klammer "}", welche die Funktion abschließt folgendes einfügen:
    fclose(logf);

    Im Anschluss spandsp neu kompilieren und installieren, halt wie bei der Erstinstallation. Bin mir gerade nicht sicher, glaube aber, dass Asterisk nicht neu kompiliert werden muss :rolleyes:

    Nun dürfte für jedes ausgehende Fax ein Eintrag in der log-Datei erscheinen.
    Das ganze kann ja auch noch je nach Bedarf angepasst werden.

    So, hoffe dass ich einigen hier damit weiterhelfen konnte.

    Frohes neues Jahr.
    zeckrich

    PS: Aufbau der log-Datei ist: <.tif-Name>,<Anzahl übertragener Seiten>