Log4J, который в состоянии восстановиться с полного диска?

В редких случаях может быть полезно изменить строку, которая дана __LINE__ чему-то еще. Я видел, что GNU настроить делает это, чтобы некоторые тесты сообщили о соответствующих номерах строки после того, как он ввел некоторый вуду между строками, которые не появляются в файлах первоисточника. Например:

#line 100

заставит следующие строки запуститься с __LINE__ 100. Можно дополнительно добавить новое имя файла

#line 100 "file.c"

, Это только редко полезно. Но если это необходимо, нет никаких альтернатив, о которых я знаю. На самом деле, вместо строки, макрос может использоваться также, который должен привести к любой из вышеупомянутых двух форм. Пользуясь библиотекой препроцессора повышения, можно увеличить текущую строку 50:

#line BOOST_PP_ADD(__LINE__, 50)

я думал, что полезно упомянуть это, так как Вы спросили об использовании __LINE__ и __FILE__. Каждый никогда не вытаскивает достаточно неожиданностей из C++:)

Редактирование: @Jonathan Leffler обеспечивает некоторые более хорошие примеры использования в комментариях:

Питание с #line очень полезно для препроцессоров, которые хотят сохранить ошибки сообщаемыми в коде C пользователя в соответствии с исходным файлом пользователя. Yacc, Закон, и (больше дома мне) препроцессоры ESQL/C делают это.

7
задан dertoni 27 August 2009 в 05:57
поделиться

2 ответа

Как вы видите здесь приемлемый результат? Я бы подумал о написании нового Appender, который обертывает любое приложение, обращающееся к диску, и пытается сделать что-то разумное при обнаружении IOExceptions. Может быть, заставить его заключить базовые методы записи Appenders в блок try-catch и отправить вам или системному администратору электронное письмо.

1
ответ дан 7 December 2019 в 14:36
поделиться

ограничьте размер журналов и попробуйте использовать настраиваемое приложение для архивации журналов на резервную машину с большим объемом дискового пространства.

0
ответ дан 7 December 2019 в 14:36
поделиться
Другие вопросы по тегам:

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