Здравствуйте, Sharov, Вы писали:
S>>и исключительно текстовым ( ) форматом вывода.
S>Если я правильно понял, что имелось в виду под текстовым форматом, то вот --http://stackoverflow.com/questions/1147103/log4net-xml-output
Нет, я имел в виду типизированный лог. От типизированного API для каждого из сообщений и до записи
произвольных данных.
С поддержкой Rx и анализа сообщений в прямом эфире, в том числе out of process.
В общем см содержимое
вот этого пакета — это если нужен полный хардкор.
Если попроще в использовании — см
SLAB. Вот вывод на консоль в произвольном формате:
#region Пишем в лог
// Лог
[EventSource(Name = "MyEventSource")]
public class MyEventSource : EventSource
{
public static readonly MyEventSource Log = new MyEventSource();
[Event(1, Message = "{1} says: Hello, {0}!")]
internal void SayHello(string name, string from)
{
WriteEvent(1, name, from);
}
}
// Пользовательский код - используем лог
private static void UserCode()
{
// Пишем в лог
MyEventSource.Log.SayHello(Environment.MachineName, Environment.UserName);
}
#endregion
#region Log capture
// Формат вывода
public class RawTextFormatter : IEventTextFormatter
{
public void WriteEvent(EventEntry eventEntry, TextWriter writer)
{
writer.WriteLine(eventEntry.FormattedMessage);
}
}
static void Main(string[] args)
{
// Прикручиваем перехват лога
using (var listener1 = new ObservableEventListener())
{
// Перехватываем лог
listener1.EnableEvents(MyEventSource.Log, EventLevel.LogAlways);
listener1.LogToConsole(new RawTextFormatter());
// Запускаем пользовательский код.
Task.Run(() => UserCode()).Wait();
Console.WriteLine("Done");
Console.ReadKey();
}
}
#endregion
log4net после этого — позапрошлый век.