Al momento non è ancora uscita ufficialmente la versione di log4net (http://logging.apache.org) per il Framework 2.0, ma ho voluto comunque fare qualche prova convertendo i sorgenti con Visual Studio 2005. Fuori nevica e sono praticamente bloccato in casa.
Ho creato una semplice console application ed ho configurato un logger su file all’interno dell’app.config.
Come negli esempi scaricabili dalla rete ho marcato l’assembly con l’attributo XmlConfigurator:
Il parametro Watch = true indica alla libreria di log4net di riconfigurare il logger dell’applicazione qualora il file .config su disco venisse modificato al volo.
Tra le impostazioni di default che ho trovato all’interno del progetto di Visual Studio c’è quella che abilita l’hosting process:
Eseguendo il build dell’applicazione vedo comparire su disco le copie “.vshost” dell’eseguibile e del file di configurazione:
Se a questo punto avvio l’applicazione, che farà una serie di operazioni di log, ed edito il file di configurazione “originale”... non succede nulla: log4net non si accorge di nulla semplicemente perchè sta osservando quello dell’applicazione nell’hosting process.
Se invece vado a giocare con il file di configurazione “.vshost.config” ottengo effettivamente una modifica del comportamento del logging a runtime. Nell’esempio seguente ho modificato al volo il livello di log, rendendolo sempre più restrittivo:
2006-01-28 15:19:07,390 INFO - Running from 1 seconds
2006-01-28 15:19:07,406 WARN - Running from 1 seconds
2006-01-28 15:19:07,406 ERROR - Running from 1 seconds
2006-01-28 15:19:08,406 INFO - Running from 2 seconds
2006-01-28 15:19:08,406 WARN - Running from 2 seconds
2006-01-28 15:19:08,406 ERROR - Running from 2 seconds
2006-01-28 15:19:09,406 INFO - Running from 3 seconds
2006-01-28 15:19:09,406 WARN - Running from 3 seconds
2006-01-28 15:19:09,406 ERROR - Running from 3 seconds
...
2006-01-28 15:19:21,843 WARN - Running from 15 seconds
2006-01-28 15:19:21,843 ERROR - Running from 15 seconds
2006-01-28 15:19:22,843 WARN - Running from 16 seconds
2006-01-28 15:19:22,843 ERROR - Running from 16 seconds
2006-01-28 15:19:23,843 WARN - Running from 17 seconds
2006-01-28 15:19:23,843 ERROR - Running from 17 seconds
...
2006-01-28 15:19:40,843 ERROR - Running from 34 seconds
2006-01-28 15:19:41,843 ERROR - Running from 35 seconds
2006-01-28 15:19:42,843 ERROR - Running from 36 seconds
Disabilitando il parametro “Enable the Visual Studio hosting process” dalle proprietà del progetto ottengo un comportamento vecchio stile, e cioè senza i files *.vshost.* e le modifiche al file di configurazione dell’applicazione si riflettono sul comportamento di log.