我正在尝试使用以下方式将一些Unicode输出到日志中:
logger:debug("~ts", [<<"Тест"/utf8>>]).
并在日志中获取以下内容:
DEFAULT FORMATTER CRASHEDDEFAULT FORMATTER CRASHEDDEFAULT FORMATTER....
但是,如果我改用~s
作为格式字符串,它不会崩溃,但会输出非unicode版本:
debug: ТеÑ<U+0081>Ñ<U+0082>
有什么想法吗?似乎找不到我在做什么错。
环境
Erlang/OTP 21 [erts-10.0.5] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [hipe]
sys.config
中的记录器配置:
{kernel, [
{logger, [
{handler, default, logger_std_h,
#{level => debug,
formatter => {logger_formatter, #{single_line => true}},
config => #{type => {file, "log/main.log"}}}},
{handler, errors, logger_std_h,
#{level => error,
formatter => {logger_formatter, #{single_line => false}},
config => #{type => {file, "log/errors.log"}}}}
]},
{logger_level, debug}
]}
答案 0 :(得分:1)
我整夜在Erlang Slack频道上与某人进行追踪,我们发现特别是单行格式化程序有一个使整个程序崩溃的错误。现在已在21.1中修复。升级后,问题消失了。