Здравствуйте, Sharov, Вы писали:
S>Понятно, есть такая штука -- http://serilog.net/
Ну, это всё равно что лопатка против карьерного эскаватора, не катит от слова вообще.
Не забываем про главную фишку ETW — офигенную пропускную способность.
Одна только рекомендация "если событие бросается с меньшей частотой, чем 100 раз в секунду — не заморачивайтесь" чего стоит
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, nigh, Вы писали:
N>>Т.е. сделать еще один уровень абстракции над абстракциями log4net? Если да, то зачем?
IT>Не абстракцию, а рапер. Зачем? Для удобства использования. Например, вместо:
IT>
Господи, ужас какой. Кто ж вас заставляет так делать?
гораздо удобнее пользоваться оригинальным API:
public class MyClass
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
...
public void MyMethod1()
{
log.Info("Info logging", ...);
}
...
public void MyMethod2()
{
log.Notice("Notice logging", ...);
}
}
Если вас смущает "private static readonly log4net.ILog log = log4net.LogManager.GetLogger
(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);" — то оно добавляется либо одно на класс, либо одно на все приложение (если вам не хочется иметь возможность включать/выключать лог от каждого класса индивидуально и/или видеть правильное имя класса в логах бесплатно)
IT> Т.е. речь идёт о вменяемом API, которого так не хватает log4net.
Может быть стоит просто поближе ознакомиться с lognet? А если там чего-то реально нет, контрибьютить туда?
edit: А, понял, дело исключительно в том, что "Notice" почему-то нет в интерфейсу log — так может лучше его туда законтрибьютить?
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, nigh, Вы писали:
N>>
N>> log.Notice("Notice logging", ...);
N>>
N>>Может быть стоит просто поближе ознакомиться с lognet?
IT>Блин, ещё один умник. Ты свой код компилировал? Видел там где-нибудь Notice?
я отредактировал свое оригинальное сообщение — вопрос — зачем писать wrapperы, почему не законтрибьютить код в log4net? Заодно узнаете, почему метода там сейчас нет
Здравствуйте, nigh, Вы писали:
N>я отредактировал свое оригинальное сообщение — вопрос — зачем писать wrapperы, почему не законтрибьютить код в log4net? Заодно узнаете, почему метода там сейчас нет
Его там нет, потому что таких методов там нужно на десяток тысяч строк вместо с коментариями. Народу видимо лень, а до творческого использования T4 цивилизация ещё видимо не доросла.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, nigh, Вы писали:
N>>я отредактировал свое оригинальное сообщение — вопрос — зачем писать wrapperы, почему не законтрибьютить код в log4net? Заодно узнаете, почему метода там сейчас нет
IT>Его там нет, потому что таких методов там нужно на десяток тысяч строк вместо с коментариями. Народу видимо лень, а до творческого использования T4 цивилизация ещё видимо не доросла.
по-моему, добавление недостающих методов логгинга тривиально делается через extension methods. Зачем там городить T4 — непонятно.
static public void Notice( this ILog log, object message )
{
log.Logger.Log( null, log4net.Core.Level.Notice, message, null);
}
Здравствуйте, Shmj, Вы писали:
S>Что сверх того -- то от лукавого, как говориться. log4net позиционируется как библиотека для простого настраиваемого логирования.
Для чего угодно, только не для простого.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, IT, Вы писали:
S>>Тем более что есть common-logging. Точно ещё один нужен?
IT>Чем он лучше log4net?
Тем, что это единый интерфейс к разным логерам. На выходе может быть хоть log4net, хоть NLog, хоть черт лысый (только адаптер придется написать).
Я лично log4net выкинул нафиг лет 6 назад из-за его глючности. И никакого желания его пробовать еще раз не имею.
Здравствуйте, nigh, Вы писали:
N>по-моему, добавление недостающих методов логгинга тривиально делается через extension methods. Зачем там городить T4 — непонятно.
Можно. Сколько их нужно? Давим сюда ещё оверлоады с иключениями, форматированием, асинхронностью и т.п. Это десятки методов.
N>повторяю вопрос — что мешает недостающие методы законтрибьютить в log4net?
Щас я всё брошу...
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, nigh, Вы писали:
N>шел 2016 год. Решения "из коробки" со словами "Simple" в названии требуют "microsoft tool" или visual studio чтобы просто посмотреть логи (и даже это делается не с первой попытки — см. текст про force carriage returns)
Эта чрезвычайно мощная штука позволяет хоть из драйверов посылать отладочные сообщения. Но вообще, это не для логгирования, а для отладки.
Здравствуйте, Слава, Вы писали:
С>Здравствуйте, nigh, Вы писали:
N>>шел 2016 год. Решения "из коробки" со словами "Simple" в названии требуют "microsoft tool" или visual studio чтобы просто посмотреть логи (и даже это делается не с первой попытки — см. текст про force carriage returns)
С>Эта чрезвычайно мощная штука позволяет хоть из драйверов посылать отладочные сообщения. Но вообще, это не для логгирования, а для отладки.
Драйверы на сишарпе? Да, конечно
"Чрезвычайно мощная штука" — это ETW. Она к рекомендованому донетовскому поделию имеет мало отношения.
Думаю, что этот баг так и будет там висеть. Посмотрел на код log4net, они все эти оверлоады сделали частью интерфейса ILog. Т.е. надо либо ломать интерфейс, либо делать Extensions. Но судя по дремучести их кода (поддержка только 2008-2012 студий), не исключено, что они всё ещё поддерживают ту версию шарпа, в котором нет расширений. В общем, куда ни плюнь, а делать надо (если надо) внешний расширитель.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, nigh, Вы писали:
N>>повторяю вопрос — что мешает недостающие методы законтрибьютить в log4net? Тем более что Active баг висит N>>https://issues.apache.org/jira/browse/LOG4NET-281
IT>Думаю, что этот баг так и будет там висеть. Посмотрел на код log4net, они все эти оверлоады сделали частью интерфейса ILog. Т.е. надо либо ломать интерфейс, либо делать Extensions. Но судя по дремучести их кода (поддержка только 2008-2012 студий), не исключено, что они всё ещё поддерживают ту версию шарпа, в котором нет расширений. В общем, куда ни плюнь, а делать надо (если надо) внешний расширитель.
собственно, в комментариях там написано, что нужно сделать и как сделать для этого поддержку в .NET 2.0 без всяких "внешних расширителей" — просто это еще никто не сделал.
Здравствуйте, IT, Вы писали:
IT>Здравствуйте, AndrewVK, Вы писали:
AVK>>Для веба отдельный пакет надо. А вот для log4net — сильно не уверен.
IT>Это вопрос субъетивный. Ты похоже с log4net дальше чем попыток познакомится не заходил. Я тоже делал несколько подходов к снаряду, пока не разобрался. Зато теперь для меня это вопрос копипасты, ну или отдельного пакета.
Наверняка субьективный. Например у нас ребята больше уважают NLog, вторая команда Serilog — кстати конфигурится на ура Fluent API. Serilog для ELK стека просто песня.
Log.Logger = new LoggerConfiguration()
.WriteTo.ColoredConsole()
.WriteTo.RollingFile(@"C:\Log-{Date}.txt")
.CreateLogger();