Как создать файл журнала в в папке кота/журналов

Для Linux и я верю Mac OS X, если Вы используете gcc или какой-либо компилятор, который использует glibc, можно использовать след () функции в execinfo.h, чтобы распечатать stacktrace и выйти корректно, когда Вы получаете отказ сегментации. Документация может быть найдена в libc руководстве .

, Вот пример программы, который устанавливает SIGSEGV обработчик и печатает stacktrace к stderr когда он segfaults. Эти baz() функция здесь вызывает segfault, который инициировал обработчик:

#include 
#include 
#include 
#include 
#include 


void handler(int sig) {
  void *array[10];
  size_t size;

  // get void*'s for all entries on the stack
  size = backtrace(array, 10);

  // print out all the frames to stderr
  fprintf(stderr, "Error: signal %d:\n", sig);
  backtrace_symbols_fd(array, size, STDERR_FILENO);
  exit(1);
}

void baz() {
 int *foo = (int*)-1; // make a bad pointer
  printf("%d\n", *foo);       // causes segfault
}

void bar() { baz(); }
void foo() { bar(); }


int main(int argc, char **argv) {
  signal(SIGSEGV, handler);   // install our handler
  foo(); // this will call foo, bar, and baz.  baz segfaults.
}

Компиляция с -g -rdynamic получает Вас информация о символе в Вашем выводе, который glibc может использовать для создания хорошего stacktrace:

$ gcc -g -rdynamic ./test.c -o test

Выполнение этого получает Вас этот вывод:

$ ./test
Error: signal 11:
./test(handler+0x19)[0x400911]
/lib64/tls/libc.so.6[0x3a9b92e380]
./test(baz+0x14)[0x400962]
./test(bar+0xe)[0x400983]
./test(foo+0xe)[0x400993]
./test(main+0x28)[0x4009bd]
/lib64/tls/libc.so.6(__libc_start_main+0xdb)[0x3a9b91c4bb]
./test[0x40086a]

Это показывает загрузочный модуль, смещение и функцию, что каждый кадр в стеке прибыл из. Здесь Вы видите обработчик сигналов сверху стека и функции libc прежде main в дополнение к main, foo, bar, и baz.

8
задан Arun P Johny 12 August 2009 в 05:36
поделиться

1 ответ

Вы можете установить это следующим образом

log4j.appender.fileAppender.file=${catalina.base}/logs/mylog.log
12
ответ дан 5 December 2019 в 14:05
поделиться
Другие вопросы по тегам:

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