2016-08-12 4 views
-1

Я разрабатываю программное обеспечение и запускаю его в VirtualBox для его проверки. Тем не менее, он поддерживает повесить всю виртуальную машину - я не могу использовать консоль, SSH и т. Д. Это затрудняет отладку. Приложение записывает журналы, но когда машина зависает, я понятия не имею, успешно ли они записаны на диск или нет.Как я могу собирать журналы из Linux, работающие в VirtualBox во внешнем файле?

Есть ли способ захватить живые журналы во внешнем файле, чтобы я мог контролировать его, даже когда я не могу получить доступ к виртуальной машине?

+0

Я не уверен, что это по теме для SO, и кажется [есть некоторая неопределенность] (http://meta.stackoverflow.com/questions/286079/questions-off-topic-about-virtualmachine- и-командная строка/286081). Я счастлив переместить его, если есть лучшее место для него. –

ответ

0

Если ваше программное обеспечение регистрируется с помощью syslog или может быть подключено к syslog через logger или process supervisor, то вы можете экспортировать журналы через виртуальный последовательный порт и записывать вывод этого файла в файл.

Прежде всего, настроить последовательный порт в VirtualBox:

  1. Остановка VM
  2. Перейти в контекстное меню> Настройки> Порты
  3. Проверить 'Enable Serial Port'
  4. Set ' Port Number 'to' COM1 '
  5. Установите' Port Mode 'в' Raw File '
  6. Установите' Path/Address 'в' /tmp/serial.log 'или какой-либо другой подходящий путь на хост
  7. Запустите виртуальную машину

Затем, внутри виртуальной машины, настроить системный журнал, чтобы войти в этот последовательный порт. Если у вас есть rsyslog, сделайте следующее:

# give the syslog user access to serial ports by adding it to the right group 
# 'dialout' in the Debian family, 'uucp' in the Red Hat clan; check local listings 
sudo usermod -a -G dialout syslog 

cat <<EOF >/etc/rsyslog.d/99-serial.conf 
daemon,mail.*;\ 
     news.=crit;news.=err;news.=notice;\ 
     *.=debug;*.=info;\ 
     *.=notice;*.=warn  /dev/ttyS0 
EOF 
service rsyslog restart 

Обратите внимание, что COM1 должен появиться в Linux, как/DEV/ttyS0. Если вы используете другой последовательный порт, это может быть другое устройство.