recomendaría log4net.
Necesitará varios archivos de registro. Así que múltiples appenders de archivos. Además, puedes crear los appenders de archivos dinámicamente.
Código de ejemplo:
using log4net;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;
// Set the level for a named logger
public static void SetLevel(string loggerName, string levelName)
{
ILog log = LogManager.GetLogger(loggerName);
Logger l = (Logger)log.Logger;
l.Level = l.Hierarchy.LevelMap[levelName];
}
// Add an appender to a logger
public static void AddAppender(string loggerName, IAppender appender)
{
ILog log = LogManager.GetLogger(loggerName);
Logger l = (Logger)log.Logger;
l.AddAppender(appender);
}
// Create a new file appender
public static IAppender CreateFileAppender(string name, string fileName)
{
FileAppender appender = new
FileAppender();
appender.Name = name;
appender.File = fileName;
appender.AppendToFile = true;
PatternLayout layout = new PatternLayout();
layout.ConversionPattern = "%d [%t] %-5p %c [%x] - %m%n";
layout.ActivateOptions();
appender.Layout = layout;
appender.ActivateOptions();
return appender;
}
// In order to set the level for a logger and add an appender reference you
// can then use the following calls:
SetLevel("Log4net.MainForm", "ALL");
AddAppender("Log4net.MainForm", CreateFileAppender("appenderName", "fileName.log"));
// repeat as desired
Fuentes/Buenas conexiones:
Log4Net: Programmatically specify multiple loggers (with multiple file appenders)
Adding appenders programmatically
How to configure log4net programmatically from scratch (no config)
Plus, el log4net también permite escribir en el registro de eventos también. Todo se basa en la configuración, y la configuración también puede cargarse dinámicamente desde xml en el tiempo de ejecución.
Edición 2:
Una forma de cambiar los archivos de registro sobre la marcha: fichero de configuración Log4net soporta variables de entorno:
Environment.SetEnvironmentVariable("log4netFileName", "MyApp.log");
y en la configuración de log4net:
<param name="File" value="${log4netFileName}".log/>
Estoy interesado también –
¿Hay una sola aplicación en ejecución que escanee todas las máquinas de forma remota o su aplicación se implementará en cada máquina individualmente? –
¿desea crear un archivo de registro o por máquina? – Reniuz