Информация об изменениях

Сообщение Re[8]: Логгинг, или "wtf, log4net"? от 29.03.2016 12:38

Изменено 29.03.2016 12:49 Sinix

Здравствуйте, 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 после этого — позапрошлый век.
Re[8]: Логгинг, или "wtf, log4net"?
Здравствуйте, 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 после этого — позапрошлый век.