Логгинг, или "wtf, log4net"?
От: SteeLHeaD  
Дата: 28.03.16 13:20
Оценка: +3 :)))
Господа,
сегодня, после примерно трехлетнего перерыва, я попробовал еще раз применить log4net в своем проекте.
Три года назад я попробовал, у меня не получилось, я плюнул, и написал свой логгер, которвй в 50 строчках делал всё, что мне надо.
Я его даже в DLL не оформлял — прорсто копировал эти 50 строк как статический класс из проекта в проект.
Но я ставноивлся взрослее, и все чаще мой класс заставлял меня делать кучу проверок в коде и всяких неудобных операций, чтобы получить результат.
И вот я оопять попробовал овладеть log4net
И понял 2 вещи:
1) я все таки ни хрена не понимаю. Потому что ну очень грормоздко. Философия log4net хорошо передается фразой из введения в него: "Run the program and… see nothing. Don’t worry, that’s expected."

2) Неужели весь java — style софт такое же унылое г?

Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.
я_негодую log4net
Re: Логгинг, или "wtf, log4net"?
От: _ichensky Европа https://github.com/ichensky
Дата: 28.03.16 13:43
Оценка:
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.


просто читаешь ман. нет мана? — исходники. делаешь для себя конфиг. пользуешься.
вообще перед тем как что-то исспользовать надо хорошенько изучить, надо ли оно вообще тебе, какие есть альтернативы, какие могут возникнуть проблемы в будущем.
юзать либу в проекте, не изучив ее — смешно. это все-равно что купить айфон, потому что увидел как ванильнильная фифа в метро делала с айфона селфи, а потом страдать, потому что айфон ничего толком и не умеет, а в апл обратно его уже не вернуть(из проекта либу не выпилить/дописать, — можно, но костылями).
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re: Логгинг, или "wtf, log4net"?
От: Sharov Россия  
Дата: 28.03.16 13:46
Оценка:
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.


Какие 4 страницы? Берете простейший базовый конфиг, пишите две строчки для инициализации и все готово. Нормальный обычной логгер.
Кодом людям нужно помогать!
Re: Логгинг, или "wtf, log4net"?
От: Mr.Delphist  
Дата: 28.03.16 14:08
Оценка: 1 (1) +5
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.


Попробуйте NLog?
Re: Логгинг, или "wtf, log4net"?
От: Kolesiki  
Дата: 28.03.16 17:09
Оценка: -1
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Три года назад я попробовал, у меня не получилось, я плюнул, и написал свой логгер, которвй в 50 строчках делал всё, что мне надо.


+1 к цепочке велосипедастов. У меня, правда, заняло 535, но это со всеми комментами/отступами, зато логгер имеет уровни логгирования(DEBUG/TRACE/etc), асинх, резервный канал лога, вывод в консоль/файл/винлог/БД и всё это на плагинах. Что там понаписали макаки в log4 — ума не приложу, но точно воды на 95%.

SLH>1) я все таки ни хрена не понимаю. Потому что ну очень грормоздко.


Потому что пишут яйцеголовые кодисты-абстракционисты им почему-то кажется, что их мусором будут пользоваться минимум 100 лет и непременно в самых экстремально-извращённых конфигурациях.

SLH>2) Неужели весь java — style софт такое же унылое г?


Не думаю. Но Жабо — многословный, да — сказывается переупрощённая библиотека и "никакой" язык.
Re[2]: Логгинг, или "wtf, log4net"?
От: Lexey Россия  
Дата: 28.03.16 17:32
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

SLH>>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.


MD>Попробуйте NLog?


Я бы даже сказал, попробуйте Common.Logging. А какой конкретный логер с ним юзать — второй вопрос. Хотя, я тоже за NLog.
"Будь достоин победы" (c) 8th Wizard's rule.
Отредактировано 28.03.2016 17:33 Lexey . Предыдущая версия .
Re: Логгинг, или "wtf, log4net"?
От: nigh  
Дата: 28.03.16 17:41
Оценка: +1
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.


совершенно не оправдываю log4net, но философия шариковых не работает с логами:

— "запиши лог!" — куда? на консоль? в файл? в OutputDebugString? в windows event log? в базу данных? послать по сети? что делать, если это winforms, где консоли нет? Если в файл, в какой файл писать, как файлы именовать и ротировать?

Ах, вам все это не нужно и вы не хотите в этом разбираться и нужен "самый простой" сценарий — но у всех они разные, а библиотека одна.
Re: Логгинг, или "wtf, log4net"?
От: Слава  
Дата: 28.03.16 18:07
Оценка:
Здравствуйте, SteeLHeaD, Вы писали:

SLH>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять. А вот уже тогда лезть в настройки. А не так, что сначала нужно 4 страницы конфигов, в которых ты не понимаешь, зачем они нужны.


Пользуйтесь NLog. У меня от log4net впечатления странные, когда один и тот же конфиг ведет себя по-разному в разных проектах — это ненормально. Гибкость у него потрясающая, конечно, но NLog тоже умеет очень многое.
Re: Логгинг, или "wtf, log4net"?
От: QrystaL Украина  
Дата: 28.03.16 18:12
Оценка: 3 (1) :)
Здравствуйте, SteeLHeaD, Вы писали:
SLH>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять.
Есть из коробки http://blog.stephencleary.com/2010/12/simple-and-easy-tracing-in-net.html
Re[2]: Логгинг, или "wtf, log4net"?
От: nigh  
Дата: 28.03.16 18:32
Оценка: +1 -1
Здравствуйте, QrystaL, Вы писали:

QL>Здравствуйте, SteeLHeaD, Вы писали:

SLH>>Почему нельзя сделать логгер, которому можно просто скзаать "запиши лог!" — и он запишет лог. И этим можно пользоваться до тех пор, пока не возникнет желания что нить поменять.
QL>Есть из коробки http://blog.stephencleary.com/2010/12/simple-and-easy-tracing-in-net.html

Observe the Trace Messages
Simple tracing can be observed in one of two ways:

If you run the application in the Visual Studio Debugger, all enabled trace output is written to the Output window.
If you’re running in production (or for some other reason can’t use the debugger), a free Microsoft tool called DebugView may be used to view the traces in real-time (and optionally log them to a file). Tip: uncheck “Options” “Force Carriage Returns” to make the trace output line up correctly.




шел 2016 год. Решения "из коробки" со словами "Simple" в названии требуют "microsoft tool" или visual studio чтобы просто посмотреть логи (и даже это делается не с первой попытки — см. текст про force carriage returns)
Re[3]: Логгинг, или "wtf, log4net"?
От: QrystaL Украина  
Дата: 28.03.16 18:44
Оценка: +2 :)
Здравствуйте, nigh, Вы писали:
N>шел 2016 год. Решения "из коробки" со словами "Simple" в названии требуют "microsoft tool" или visual studio чтобы просто посмотреть логи (и даже это делается не с первой попытки — см. текст про force carriage returns)
Че-то вы не дочитали, сразу с шашкой наголо кинулись критиковать
Процитированный отрывок это дополнительный функционал (например, в студии в Output всё дублируется).

Буквально следующий же абзац

You can add “trace listeners”. The simple tracing above just uses the Default trace listener. .NET also includes listeners for logging to the Event Log, a text file, an XML file, or the Console.

Отредактировано 28.03.2016 18:44 QrystaL . Предыдущая версия .
Re[4]: Логгинг, или "wtf, log4net"?
От: nigh  
Дата: 28.03.16 19:08
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Здравствуйте, nigh, Вы писали:

N>>шел 2016 год. Решения "из коробки" со словами "Simple" в названии требуют "microsoft tool" или visual studio чтобы просто посмотреть логи (и даже это делается не с первой попытки — см. текст про force carriage returns)
QL>Че-то вы не дочитали, сразу с шашкой наголо кинулись критиковать
QL>Процитированный отрывок это дополнительный функционал (например, в студии в Output всё дублируется).

QL>Буквально следующий же абзац

QL>

QL>You can add “trace listeners”. The simple tracing above just uses the Default trace listener. .NET also includes listeners for logging to the Event Log, a text file, an XML file, or the Console.


я дочитал. Процитированный отрывок — это раздел "Observe the Trace Messages", а ваше — это "More power!"
Я даже это убожество (.NET Trace listeners) на практике использовал. Рекомендовать такое можно только в двух случаях: вы никогда сами этим не пользовались или вы рекомендуете кому-то кого сильно не любите.

Например, ни один из стандартных Trace listener, который пишет в файлы, не умеет их ротировать. Совсем. Указываете одно имя файла и надеетесь на лучшее
Приходится импортировтаь классы из Microsoft.VisualBasic.Logging

https://stackoverflow.com/questions/867833/log-files-rotation-with-net-listeners

чтобы писать логи используя Event log trace listener нужны админские права и тд и т п.
Re[5]: Логгинг, или "wtf, log4net"?
От: QrystaL Украина  
Дата: 28.03.16 19:14
Оценка: :)
Здравствуйте, nigh, Вы писали:
N>Например, ни один из стандартных Trace listener, который пишет в файлы, не умеет их ротировать. Совсем.
Вы уж разберитесь — то ли вам надо

скзаать "запиши лог!" — и он запишет лог

то ли продвинутый функционал
Какая постановка вопроса — такой и совет.
Re[6]: Логгинг, или "wtf, log4net"?
От: nigh  
Дата: 28.03.16 19:27
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Здравствуйте, nigh, Вы писали:

N>>Например, ни один из стандартных Trace listener, который пишет в файлы, не умеет их ротировать. Совсем.
QL>Вы уж разберитесь — то ли вам надо
QL>

QL>скзаать "запиши лог!" — и он запишет лог

QL>то ли продвинутый функционал
так прикол в том, что "запиши лог!" в случае с .NET trace listener его пишет не в файл, а в Debug Output, где его посмотреть можно только в студии или через DebugView.
Чтобы пистаь в файл, надо еще какой-то XML файл редактировать и что-то там указывать. И это ничем от log4net с его конфигурацией Appenderов не отличается.
Re[2]: Логгинг, или "wtf, log4net"?
От: Sinix  
Дата: 28.03.16 19:48
Оценка: +1
Здравствуйте, nigh, Вы писали:

N>совершенно не оправдываю log4net, но философия шариковых не работает с логами

Да всё оно работает. Практически во всех логгерах основной сценарий: пишем логирование в коде, затем динамически подрубаем листенеры к известным источникам. Листенеров нет — нагрузка нулевая.

Дальше все различия из серии про вкус фломастеров.
Re[7]: Логгинг, или "wtf, log4net"?
От: QrystaL Украина  
Дата: 28.03.16 19:52
Оценка: +1
Здравствуйте, nigh, Вы писали:
N>Чтобы пистаь в файл, надо еще какой-то XML файл редактировать и что-то там указывать. И это ничем от log4net с его конфигурацией Appenderов не отличается.
Чтобы писать в файл, надо как минимум указать путь к нему. Это делается одной строчкой прямо в коде. ХМЛ файл вообще не обязателен.
var traceSource = new TraceSource("File");
traceSource.Listeners.Add(new TextWriterTraceListener("d:/log.txt"));
Re[2]: Логгинг, или "wtf, log4net"?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.03.16 20:29
Оценка: +1
Здравствуйте, nigh, Вы писали:

N>Ах, вам все это не нужно и вы не хотите в этом разбираться и нужен "самый простой" сценарий — но у всех они разные, а библиотека одна.


Поэтому в таких случаях библиотека должна позволять легко подключать готовые сценарии и сложно формировать собственные. Вот посмотри на WCF — по сложности и количеству функционала все эти логгеры даже рядом не валялись, а запустить можно всего несколькими строками кода. А в log4net фигвам — нужно минимум атрибут на сборку навесить и влепить кусок кода в конфиг.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: Логгинг, или "wtf, log4net"?
От: nigh  
Дата: 28.03.16 20:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, nigh, Вы писали:


N>>Ах, вам все это не нужно и вы не хотите в этом разбираться и нужен "самый простой" сценарий — но у всех они разные, а библиотека одна.


AVK>Поэтому в таких случаях библиотека должна позволять легко подключать готовые сценарии и сложно формировать собственные.

log4net вроде прекрасно с этим справляется, только для ТС это слишком сложно.

>Вот посмотри на WCF — по сложности и количеству функционала все эти логгеры даже рядом не валялись, а запустить можно всего несколькими строками кода.

Ага, и еще парой мегабайт XMLя (шучу, шучу)
по-моему, что WCF, что log4net одинаковы по количеству overengineering для простых сценариев.

>А в log4net фигвам — нужно минимум атрибут на сборку навесить и влепить кусок кода в конфиг.

аттрибует на сборку вешать наобязательно — нужен или аттрибут или вызов log4net.Config.XmlConfigurator.Configure()
это ничем от "нескольких строчек" в WCF не отличается
Re[8]: Логгинг, или "wtf, log4net"?
От: nigh  
Дата: 28.03.16 20:46
Оценка:
Здравствуйте, QrystaL, Вы писали:

QL>Здравствуйте, nigh, Вы писали:

N>>Чтобы пистаь в файл, надо еще какой-то XML файл редактировать и что-то там указывать. И это ничем от log4net с его конфигурацией Appenderов не отличается.
QL>Чтобы писать в файл, надо как минимум указать путь к нему. Это делается одной строчкой прямо в коде. ХМЛ файл вообще не обязателен.
QL>
QL>var traceSource = new TraceSource("File");
QL>traceSource.Listeners.Add(new TextWriterTraceListener("d:/log.txt"));
QL>

так а я о чем? в случае с log4net это абсолютно то же самое.
Re[4]: Логгинг, или "wtf, log4net"?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 28.03.16 20:51
Оценка:
Здравствуйте, nigh, Вы писали:

N>log4net вроде прекрасно с этим справляется, только для ТС это слишком сложно.


Плохо он справляется, нельзя дефолтный сценарий подключить одной строчкой кода.

>>Вот посмотри на WCF — по сложности и количеству функционала все эти логгеры даже рядом не валялись, а запустить можно всего несколькими строками кода.

N>Ага, и еще парой мегабайт XMLя (шучу, шучу)

XML не обязателен, что характерно.

N>по-моему, что WCF, что log4net одинаковы по количеству overengineering для простых сценариев.


Это по твоему. А на практике, к примеру, можно так:
public static WebChannelFactory<IRsdnIndexService> CreateFactory()
{
    return new WebChannelFactory<IRsdnIndexService>(
        new WebHttpBinding(),
        new Uri(ConfigManager.GetString("IndexServerUri")));
}
...
using (var factory = IndexServiceHelper.CreateFactory())
using (var svc = factory.CreateChannel())
    svc.Search(...);

И никаких конфигов.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.