Frage

Ich entwickle eine benutzerdefinierte Sharepoint-Lösung, die aus einer Funktion und ein Timer Job besteht (die durch das Merkmal in FeatureActivated erstellt wird). In meiner Lösung möchte ich für die Anmeldung (Ich weiß, über ULS) verwenden log4net.

Alles ist mit log4net in der Funktion selbst (nur platziert log4net.config in der Nähe von web.config und alles ist in Ordnung) in Ordnung, aber ich habe ganz wie keine Ahnung log4net von Timer Job initialisieren (unter Berücksichtigung der es ausgeführt wird nicht durch IIS aber durch OSWTIMER).

Kann jemand bitte helfen Sie mir Antworten auf die Fragen zu finden:

  1. Wo log4net.config speichern und wie sie den Job übergeben?
  2. Muss ich log4net jedes Mal ausführen initialisieren müssen () -Methode aufgerufen wird?

Danke!

War es hilfreich?

Lösung

Es ist schon eine Weile her, seit ich log4net verwendet, aber wenn ich mich recht erinnere, können Sie speichern Sie die Konfigurationsdatei, wo immer Sie wollen und lassen Sie log4net es bei der Initialisierung des Loggers von dort laden.

1) Ein guter Ort, um die Konfigurationsdatei zu speichern, würde der Ordner innerhalb der letzten 12 Nesselsucht sein. Vielleicht ist der Ordner Ihrer Funktion. Da der Weg wird sich nicht ändern zu dieser Datei sollte es leicht sein, es mit dem Logger zu verweisen.

2) Ich denke, dass Sie den Logger zu initialisieren haben jedes Mal, als die SPJobDefinition (Timer Job-Klasse) in der Datenbank gespeichert wird, wenn es nicht läuft. Die Funktionalität des Timer Job in der Datenbank zu speichern stammt aus der Basisklasse SPJobDefinition SPPersistedObject . Membervariablen einer Klasse von SPPersistedObject geerbt, die zusammen mit der Klasse in der Datenbank gespeichert werden sollen, müssen mit einem [Persisted] Attribute gekennzeichnet werden. Aber soweit ich weiß, kann persistente Objekte nur elementare Datentypen (int, long, string, ...).

Speicher So ein log4net Logger-Objekt in der Datenbank wird nicht funktionieren, oder zumindest wird nicht unterstützt. So wird jedes Mal, wenn Ihr Auftrag aus der Datenbank geladen das Logger-Objekt erneut initialisiert werden muss.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top