Какой смысл помехи?

Mocha принимает globs, поэтому это можно сделать в командной строке:

mocha 'test/**/*.{es6,jsx}'

Кавычки таковы, что оболочка не пытается интерпретировать ее и калечить ее в процессе. Это может работать без них, но лучше безопасно, чем жаль ...

Итак, вы можете поместить шаблон в test/mocha.opts, и Mocha будет читать его с каждым вызовом. Просто поместите это в файл:

test/**/*.{es6,jsx}

Или добавьте его в конец вашего mocha.opts файла, если у вас уже есть другие опции.

51
задан markets 27 October 2009 в 16:32
поделиться

3 ответа

действительно ли возможно перенаправить помеху, cerr, суд, stdin, stdout, и/или stderr?

Да. Вы хотите rdbuf функция.

ofstream ofs("logfile");
cout.rdbuf(ofs.rdbuf());
cout << "Goes to file." << endl;

единственная разница между помехой и cerr буферизация?

, Насколько я знаю, да.

36
ответ дан Konrad Rudolph 7 November 2019 в 10:22
поделиться

Если Вы находитесь в posix среде оболочки (я действительно думаю об ударе), можно перенаправить любой дескриптор файла к любому другому дескриптору файла, так для перенаправления, Вы можете просто:

$ myprogram 2>&5 

для перенаправления stderr в файл, представленный fd=5.

Редактирование: вообще-то, если задуматься мне нравится ответ @Konrad Rudolph о перенаправлении лучше. rdbuf () является более когерентным и портативным способом сделать это.

Что касается входа, хорошо... Я запускаю с библиотеки Boost для всех вещей C++, который не находится в библиотеке станд. Созерцайте: Повышение, Регистрирующее Редактирование v2

: Вход Повышения не часть Библиотек Повышения; это было рассмотрено, но не принято.

Редактирование : 2 года спустя, назад в мае 2010, Повышение действительно принимало регистрирующуюся библиотеку, теперь названную Boost.Log .

, Конечно, существуют альтернативы:

  • Log4Cpp (API log4j-стиля для C++)
  • Log4Cxx (Спонсируемый Apache API log4j-стиля)
  • Pantheios (более не существующий? в прошлый раз, когда я попробовал, я не мог заставить его основываться на недавнем компиляторе)
  • GLog Google (благодарность за информацию @SuperElectric)

существует также регистратор Windows Event.

И несколько статей, которые могут быть полезными:

14
ответ дан hochl 7 November 2019 в 10:22
поделиться

Перенаправления

ответ Konrad Rudolph хорош в отношении того, как перенаправить std::clog (std::wclog).

Другие ответы говорят Вам о различных возможностях, таких как использование перенаправления командной строки такой как 2>output.log. С Unix можно также создать файл и добавить другой вывод к командам с чем-то как 3>output.log. В Вашей программе затем необходимо использовать fd номер 3 для печати журналов. Можно продолжить печатать к stdout и stderr обычно. IDE Visual Studio имеет подобную функцию с их CDebug команда, которая отправляет ее вывод в окно вывода IDE.

stderr совпадает с stdout?

Это обычно верно, но под Unix можно установить stderr к [1 115], что означает, что он переходит к другому tty (иначе терминал). Это редко использовало эти дни. У меня был он тот путь на IRIX. Я открыл бы отдельный X Window и видел бы ошибки в нем.

системный журнал

Одна вещь, не упомянутая, под Unix, Вы также имеете syslog().

новейшие версии в соответствии с Linux (и вероятно Mac OS/X) делают намного больше, чем он привык для. Особенно, это может использовать идентификационные данные и некоторые другие параметры для перенаправления журналов в определенный файл (т.е. mail.log). Механизм системного журнала может использоваться между компьютерами, таким образом, журналы от компьютера A могут быть отправлены на компьютер B. И конечно можно отфильтровать, входит в систему различные пути, особенно серьезностью.

Эти syslog() также очень прост в использовании:

syslog(LOG_ERR, "message #%d", count++);

Это предлагает 8 уровней (или серьезность), формат а-ля printf(), и список аргументов в пользу формата.

Программно, можно настроить несколько вещей, если Вы сначала звоните эти openlog() функция. Необходимо назвать его перед первым вызовом к [1 122].

, Как упомянуто unixman83, можно хотеть использовать макрос вместо этого. Тем путем можно включать некоторые параметры в сообщения, не имея необходимость повторять их много раз. Возможно, что-то вроде этого (см. Макрос Variadic ):

// (not tested... requires msg to be a string literal)
#define LOG(lvl, msg, ...) \
     syslog(lvl, msg " (in " __FILE__ ":%d)", __VA_ARGS__, __LINE__)

можно также найти __func__ полезный.

перенаправление, фильтрация, и т.д. сделано путем создания конфигурационных файлов. Вот пример из моего snapwebsites проекта:

mail.err /var/log/mail/mail.err
mail.* /var/log/mail/mail.log
& stop

я устанавливаю файл под [1 124] и syslog, сервер автоматически обрабатывает то изменение и сохраняет любые связанные с почтой журналы к тем папкам.

Примечание: Я также должен создать /va/log/mail папка и файлы в папке, чтобы удостовериться, что все это работает правильно (потому что иначе у почтового демона не может быть достаточного количества полномочий.)

snaplogger (немного разъема)

я использовал log4cplus, который, начиная с версии 1.2.x, довольно хорош. У меня есть три недостатков об этом, хотя:

  1. это требует меня к абсолютно ясному все, если я хочу назвать ветвление (); так или иначе это не переживает ветвление () вызов правильно... (по крайней мере, в версии, которую я имел)
  2. , конфигурационными файлами (.properties) не легко управлять в моей среде, где мне нравится, когда администраторы вносят изменения, не изменяя оригинал
  3. , это использует C++ 03, который мы теперь в 2019... Я хотел бы иметь, по крайней мере, C++ 11

Из-за этого, и особенно из-за точки (1), я записал свою собственную версию, названную snaplogger. Это не точно автономный проект, все же. Я использую много других проектов от snapcpp среды (намного легче просто получить snapcpp и работать bin/build-snap, сценарий или всего получает двоичные файлы от панели запуска .)

преимущество использования регистратора, такого как snaplogger или log4cplus состоит в том, что обычно можно определять любое число мест назначения и многих других параметров (таких как уровень серьезности, как предлагается [1 128]). log4cplus способен к отправке его вывода ко многим различным местам: файлы, системный журнал, MS Windows регистрируют систему, консоль, сервер, и т.д. Проверьте appenders в тех двух проектах иметь идею списка возможностей. Интересный фактор здесь - то, что любой журнал может быть отправлен всем местам назначения. Это полезно, чтобы иметь файл под названием all.log, куда все Ваши сервисы отправляют свои журналы. Это позволяет понимать определенные ошибки, которые не были бы так же легки с отдельными файлами журнала при выполнении многих сервисов параллельно.

Вот простой пример в snaplogger конфигурационном файле:

[all]
type=file
lock=true
filename=/var/log/snapwebsites/all.log

[file]
lock=false
filename=/var/log/snapwebsites/firewall.log

Уведомление, что для all.log файл я требую блокировки так несколько устройств записи, не искажает журналы между каждым другие. Это не необходимо для эти [file] раздел, потому что у меня только есть один процесс (никакие потоки) для того.

Оба предложения Вы способ добавить Ваш собственный appenders. Так, например, если у Вас есть спокойное приложение с окном вывода, Вы могли бы записать appender для отправки вывода SNAP_LOG_ERROR() вызовы к тому окну.

snaplogger также предложения Вы способ расширить переменную поддержку в сообщениях (также названный форматом.), Например, я могу вставить дату с помощью ${date} переменная. Затем я могу настроить его с параметром. Чтобы только произвести год я использую ${date:year}. Эта поддержка переменной и параметра также расширяема.

snaplogger может отфильтровать вывод серьезностью (как системный журнал), regex, и [1 147] компонент . Мы имеем normal и secure компонент, значение по умолчанию normal. Я хочу, чтобы журналы, отправленные в secure компонент, были записаны для обеспечения файлов. Это означает в подкаталоге, который является путем, более защищенным, чем нормальные журналы, которые может рассмотреть большинство администраторов. Когда я выполняю свои сервисы HTTP, несколько раз я отправляю информацию, такую как последние 3 цифры кредитной карты. Я предпочитаю иметь тех, которые в безопасном журнале. Это могли также быть связанные с паролем ошибки. Что-либо я считаю, чтобы быть угрозой безопасности в журнале, действительно. Снова, компоненты расширяемы, таким образом, у Вас может быть свое собственное.

0
ответ дан 7 November 2019 в 10:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: