Я ныряю через ACE и записываю сообщение в файл, используя ACE_ERROR
макро.
И AFAIK, ACE_ERROR
регистрирует все сообщения в одном файле независимо от уровня их ошибок.
Тем не менее, мне действительно нужно писать сообщения в соответствии с уровнем их ошибок.
Я видел ACE_LOG_MSG->open()
Функция, однако, я понимаю, что когда вы уже вызываете эту функцию дважды, во второй раз она закроет файл, который вы открыли, когда вызывали функцию в начале.
Предположим, у меня есть список, и я хочу его зарегистрировать, и в этом списке два смежных элемента не имеют одинаковый уровень ошибки.
Тогда я буду открывать и закрывать файлы, не повлияет ли это на производительность моих приложений?
Так есть ли способ сохранить эти файлы открытыми?
Спасибо !
Не закрывать файлы, в которые вы входите, особенно плохо при отладке. Если приложение выходит из строя с открытым файлом, его содержимое может (и это случается довольно часто) повреждаться, оставляя вас абсолютно без информации.
Если вы закроете файл должным образом, вы гарантированно найдете там хоть какую-то информацию, возможно, ближе к реальной проблеме. Если вас беспокоит производительность, вам следует просто уменьшить уровень журнала или, если это невозможно, возможно, вы могли бы перенести запись в другой процесс через (например) TCP-соединение.
Во всяком случае, не оптимизируйте, пока вы не измерили! Это может быть просто не будет никакого влияния, производительность является сложной проблемой, которая зависит от многих факторов.
Других решений пока нет …