如何正确编码的阿帕奇错误.log尾巴


How to get properly encoded apache error.log with tailf?

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

例如:

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

但是错误.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

有没有办法正常地读取尾.log错误(使用 sed 或其他东西)?

或者我如何"告诉"apache不编码utf符号错误.log?

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

echo -e - 获得十六进制的 UTF insead。

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

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

因此,结果是:

tailf /var/log/apache2/error.log | while read -r line; do echo -e "$line"; done;

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

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

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

enca FILE

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

enconv FILE

显然,您需要将FILE替换为错误日志。之后,您可以简单地尝试以下内容:

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

以下载您的文件。