Questa è una domanda molto comune, ma non sono stato in grado di ottenere una risposta per funzionare. Ecco il mio file di configurazione:log4net: come impostare dinamicamente il nome del file del logger?
Ma ho bisogno di determinare il nome del file di registrazione effettivo in fase di esecuzione. Ho trovato un buon esempio here, ma quando provo ad andare in loop attraverso la collezione restituita dalla chiamata a GetIterators(), trovo che quella raccolta è vuota.
Ho bisogno di cambiare il nome "CraneUserInterface.log" in "CraneUserInterface_1.log", o 2 o 3, a seconda di qualcosa che il programma legge in fase di esecuzione. Come lo posso fare?
Ecco il mio primo passaggio in utilizzando il codice presentato in quel campione:
static bool ChangeLogFileName(string AppenderName, string NewFilename)
{
// log4net.Repository.ILoggerRepository RootRep;
// RootRep = log4net.LogManager.GetRepository();
log4net.Repository.ILoggerRepository RootRep = m_logger.Logger.Repository;
foreach (log4net.Appender.IAppender iApp in RootRep.GetAppenders())
{
string appenderName = iApp.Name;
if (iApp.Name.CompareTo(AppenderName) == 0
&& iApp is log4net.Appender.FileAppender)
{
log4net.Appender.FileAppender fApp = (log4net.Appender.FileAppender)iApp;
fApp.File = NewFilename;
fApp.ActivateOptions();
return true; // Appender found and name changed to NewFilename
}
}
return false; // appender not found
}
Grazie mille!
Nonostante leggere due volte, non ho idea perché si vuole fare questo. –
Questo è per l'uso in un laptop che sarà nella cabina di una gru in un impianto di ricottura. L'impianto ha 3 gru. Dato che non sono nello stabilimento, né sarò nel prossimo futuro, ho un simulatore che finge di essere tutte e tre le gru. Ci saranno 3 istanze di questo runniing di programmi allo stesso tempo. Devo tenere traccia degli eventi per ciascuna delle 3 gru separatamente, e probabilmente dovrei evitare che due istanze di questo programma scrivano nello stesso file di registro contemporaneamente. –
Penso che il mio istinto fosse giusto. Stai cercando di risolvere il problema sbagliato. –