如何使用tailf正确编码apache error.log?

时间:2013-10-31 02:07:10

标签: php apache encoding utf-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?

2 个答案:

答案 0 :(得分:9)

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

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

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;

答案 1 :(得分:1)

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

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

  

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

enca FILE

并了解您的文件使用的编码类型,您可以尝试:

enconv FILE

显然,您需要将 FILE 替换为您的错误日志。 之后你可以尝试类似的东西:

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

下载您的文件。