8

我有可能与俄语消息出错的代码。

例如:

Неверно составлен limit

但error.log包含:

\xd0\x9d\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80\xd0\xbd\xd0\xbe \xd1\x81\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd limit

有没有办法正常阅读tailf error.log(使用sed或其他东西)?

或者我如何“告诉” apache 不编码 utf 符号 error.log?

4

2 回答 2

11

经过几次尝试,我找到了解决方案。

echo -e- 获取 utf insead 十六进制。

tailf ... | while read line; do command; done;-- 逐行读取tailf的输出

read -r-- 避免转换转义序列。

所以,结果是:

tailf /var/log/apache2/error.log | while read -r line; do echo -e "$line"; done;
于 2013-11-05T01:56:54.977 回答
1

我认为您可能需要在您的情况下使用enca,如果您不确切知道您拥有哪种类型的输出编码,您也可以使用其中可用的选项,例如-g, --guess 您可以从gitorious获得它。

一个简单的描述,我在这里解释一下:

如果你足够幸运,你只需要知道两件事是:命令

enca FILE

并且要知道您的文件使用什么类型的编码,您可以尝试:

enconv FILE

显然你需要用你的错误日志替换FILE 。之后,您可以简单地尝试以下操作:

tail -20f /path/to/your/file/error_log

下载您的文件。

于 2013-11-02T06:10:32.587 回答