Pregunta

Estoy desarrollando una solución personalizada de SharePoint que consta de una función y un trabajo de temporizador (que se crea mediante la función en FeatureActivated). En mi solución, quiero usar log4net para iniciar sesión (sé sobre ULS).

Todo está bien con log4net en la función en sí (solo coloca log4net.config cerca de web.config y todo está bien), pero no tengo ni idea de cómo inicializar log4net desde el trabajo del temporizador (teniendo en cuenta que no se ejecuta IIS pero por OSWTIMER).

¿Puede alguien ayudarme a encontrar respuestas a las preguntas?

  1. ¿Dónde almacenar log4net.config y cómo pasarlo al trabajo?
  2. ¿Necesito inicializar log4net cada vez que se llama al método Execute ()?

¡Gracias!

¿Fue útil?

Solución

Hace un tiempo que utilicé log4net, pero si recuerdo bien, podría almacenar su archivo de configuración donde quiera y dejar que log4net lo cargue desde allí durante la inicialización del registrador.

1) Un buen lugar para almacenar el archivo de configuración sería la carpeta dentro de las 12 colmenas. Quizás la carpeta de su función. Como la ruta a este archivo no cambiará, debería ser fácil hacer referencia a él con el registrador.

2) Creo que tendrá que inicializar el registrador cada vez como SPJobDefinition (clase de trabajo del temporizador) se almacena en la base de datos cuando no se ejecuta. La funcionalidad para almacenar el trabajo del temporizador en la base de datos proviene de la clase base de SPJobDefinition SPPersistedObject . Las variables miembro de una clase heredada de SPPersistedObject, que deben almacenarse junto con la clase en la base de datos, deben marcarse con un atributo [Persisted] . Pero hasta donde yo sé, los objetos persistentes solo pueden ser tipos de datos elementales (int, long, string, ...).

Por lo tanto, almacenar un objeto Log4net Logger dentro de la base de datos no funcionará o al menos no es compatible. Entonces, cada vez que su trabajo se carga desde la base de datos, el objeto Logger debe inicializarse nuevamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top