Domanda

Sto sviluppando una soluzione SharePoint personalizzata che consiste in una funzione e in un processo timer (creato dalla funzione in FeatureActivated). Nella mia soluzione voglio usare log4net per il logging (so di ULS).

Va ??tutto bene con log4net nella funzione stessa (appena posizionato log4net.config vicino a web.config e tutto va bene), ma non ho idea di come inizializzare log4net dal processo timer (tenendo conto che non è eseguito da IIS ma da OSWTIMER).

Qualcuno può aiutarmi a trovare le risposte alle domande:

  1. Dove archiviare log4net.config e come passarlo al lavoro?
  2. Devo inizializzare log4net ogni volta che viene chiamato il metodo Execute ()?

Grazie!

È stato utile?

Soluzione

È passato un po 'di tempo da quando ho usato log4net, ma se ricordo bene, potresti archiviare il tuo file di configurazione dove vuoi e lasciare che log4net lo carichi da lì durante l'inizializzazione del logger.

1) Un buon posto per archiviare il file di configurazione sarebbe la cartella all'interno dei 12 alveari. Forse la cartella della tua funzione. Poiché il percorso di questo file non cambierà, dovrebbe essere facile fare riferimento a esso con il logger.

2) Penso che dovrai inizializzare il logger ogni volta come SPJobDefinition (classe lavoro timer) viene archiviato nel database quando non viene eseguito. La funzionalità per archiviare il processo timer nel database proviene dalla classe base di SPJobDefinition SPPersistedObject . Le variabili membro di una classe ereditata da SPPersistedObject, che devono essere archiviate insieme alla classe nel database, devono essere contrassegnate con un attributo [Persisted] . Ma per quanto ne so gli oggetti persistenti possono essere solo tipi di dati elementari (int, long, string, ...).

Quindi la memorizzazione di un oggetto logger log4net nel database non funzionerà o almeno non è supportata. Pertanto, ogni volta che il lavoro viene caricato dal database, l'oggetto Logger deve essere nuovamente inizializzato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top