2014-07-31 6 views
0

Я нахожусь на OSX Маверикс 10.9.2. Я пытаюсь запустить регистрацию приложений Revel в syslog. Мой код неудачу на этой линии:ошибка golang syslog: ошибка доставки syslog системы Unix

sysLog, err := syslog.New(syslog.LOG_NOTICE|syslog.LOG_LOCAL0, "myApp") 

с этой ошибкой:

Unix syslog delivery error 

Syslog, безусловно, работает на моей машине. В чем может быть проблема?

+0

Попробуйте проверить /var/log/system.log, чтобы узнать, была ли более полезная ошибка, чем то, что Go дал вам. Вы также можете просмотреть эту статью [http://vastdevblog.vast.com/blog/2012/04/18/using-syslogappender-on-os-x/). –

+0

Я успешно пишу syslog из другого приложения. Эта статья для Java, поэтому на самом деле не применялась. – l15a

ответ

2

Проверьте, работает ли syslog или разрешено его использование.

$ ps -aux | grep syslog 
root 11703 0.0 0.4 14424 1992 - IsJ 9:17AM 0:00.01 /usr/sbin/syslogd -ss 

Теперь проверьте, работает ли syslog в ожидаемом локальном адресе. Пакет log/syslog ищет syslog в/var/run/syslog или/dev/log. Если он не найден там, вы увидите «Ошибка доставки syslog syslog» согласно http://golang.org/src/pkg/log/syslog/syslog_unix.go.

Чтобы найти локальный адрес системного журнала использования sockstat команда

$sockstat 
USER  COMMAND PID FD PROTO LOCAL ADDRESS   FOREIGN ADDRESS  
root  login  12104 3 dgram -> /var/run/logpriv 
root  login  11791 3 dgram -> /var/run/logpriv 
root  cron  11754 4 dgram -> /var/run/logpriv 
root  syslogd 11703 4 dgram /var/run/log 
root  syslogd 11703 5 dgram /var/run/logpriv 

В вышеописанном случае, системный журнал работает в/вар/работа/журнал. Итак, я создал символическую ссылку из/var/run/log в/var/log/syslog, и ошибка исчезла.

$ln -sf /var/run/log /var/run/syslog 
+0

Я нахожусь на Mac, поэтому я побежал lsof -p. Я получил много результатов, но вижу следующее: syslogd 10273 root 6u unix 0x4a2e6ea3c4e6ca4f 0t0/var/run/syslog – l15a

+0

К сожалению, у меня нет доступа к Mac. Можете ли вы проверить, что syslog настроен и работает корректно, используя тестовое сообщение команды logger из журнала logclient. Он должен записать в файл в/var/log /, как это указано в /etc/syslog.conf. – Sid

+0

Syslog определенно работает на моей машине. Я могу написать его вручную и с помощью другого приложения. – l15a

Смежные вопросы