我编译了ejabberd 15.07(make install,使用前缀作为目标)。 我在Linux Mint 16(基于Ubuntu 13.10)下使用发行版的erlang包(版本R16B01)。
我还在Ubuntu 12.04上使用Erlang OTP 18.0进行了测试(我自己编译了erlang,使用--with-erlang编译了ejabberd,未安装发行版的软件包)。
除了没有创建erlang.log
文件外,ejabberd在两种环境下都能正常工作,基本上根本没有erlang SASL日志。
我从发行版的ejabberd v2.1.10升级,其中该文件曾经包含一堆主管日志或组件崩溃/重启。
查看ejabberdctl脚本,它确实设置了sasl_error_logger
文件,就像过去一样(例如版本2.x)。
如果我这样做
gperrot@tristan ~/apps/ejabberd/sbin $ su -c 'erl -sasl sasl_error_logger \{file,\"/home/gperrot/apps/ejabberd/var/log/ejabberd/erlang.log\"\}'
Erlang R16B01 (erts-5.10.2) [source] [64-bit] [smp:4:4] [async-threads:10] [kernel-poll:false]
Eshell V5.10.2 (abort with ^G)
1> application:start(sasl).
ok
我可以使用某些内容创建一个erlang.log
文件。
我使用bash -x ejabberdctl start
检查它使用的命令:
sh -c '/usr/bin/erl -sname ejabberd@localhost -noinput -detached -pa /home/gperrot/apps/ejabberd/lib/ejabberd/ebin -mnesia dir "\"/home/gperrot/apps/ejabberd/var/lib/ejabberd\"" -ejabberd log_rate_limit 100 log_rotate_size 10485760 log_rotate_count 1 log_rotate_date '\''""'\'' -s ejabberd -sasl sasl_error_logger \{file,\"/home/gperrot/apps/ejabberd/var/log/ejabberd/erlang.log\"\} +K true -smp auto +P 250000 start ""'
文件路径设置正确,用户运行相同,文件权限相同。
我不明白为什么我没有得到ejabberd管理的erlang.log
文件。
SASL正确启动:
gperrot@tristan ~/apps/ejabberd/sbin $ ejabberdctl debug
(ejabberd@localhost)1> application:start(sasl).
{error,{already_started,sasl}}
在ejabberd.log
我也得到了
2015-09-04 17:29:51.252 [info] <0.7.0> Application sasl started on node ejabberd@localhost
但不是erlang.log
档案。
知道为什么吗?