apache日志将选项卡字符显示为python脚本中的\t
在我的python程序(django或web.py)中,我将日志写入STDERR。e、 gapache日志将选项卡字符显示为python脚本中的\t,python,apache,Python,Apache,在我的python程序(django或web.py)中,我将日志写入STDERR。e、 g sys.stderr.write('tab\tcharacter') 当通过Apache为这些程序提供服务时,日志文件具有文本“\t”,而不是真正的选项卡(ascii=9) 如果我从命令行测试这个程序,我会看到真正的选项卡。所以这可能是Apache中的一些东西 apache日志中是否有将制表符转换为\t的功能 有没有办法绕过apache日志文件并查看选项卡 编辑 我放弃了。我正在使用另一个字符作为分隔符
sys.stderr.write('tab\tcharacter')
当通过Apache为这些程序提供服务时,日志文件具有文本“\t”,而不是真正的选项卡(ascii=9)
如果我从命令行测试这个程序,我会看到真正的选项卡。所以这可能是Apache中的一些东西
apache日志中是否有将制表符转换为\t的功能
有没有办法绕过apache日志文件并查看选项卡
编辑
我放弃了。我正在使用另一个字符作为分隔符,而不是\t…请尝试:
a = "tab" + chr(9) + "character"
sys.stderr.write(a)
否?请尝试:
a = "tab" + chr(9) + "character"
sys.stderr.write(a)
否?Apache正在从标准输出转义所有不可打印的字符,以便每行获得一个日志条目。但是你可以写一个脚本把它们加回去。Python有名为“string_escape”和“unicode_escape”的字符串解码器,它们将再次取消对字符串的转义。通常,“unicode_escape”更具包容性,除非您的程序正在编写Windows代码页字符串 在python2中,您解码字符串:
with open('apache.log') as fp:
for line in fp:
print line.decode("unicode_escape")
但在python3中,您解码字节:
with open('apache.log', 'rb') as fp:
for line in fp:
print(line.decode("unicode_escape"), end="")
Apache正在转义stdout中所有不可打印的字符,以便每行获得一个日志条目。但是你可以写一个脚本把它们加回去。Python有名为“string_escape”和“unicode_escape”的字符串解码器,它们将再次取消对字符串的转义。通常,“unicode_escape”更具包容性,除非您的程序正在编写Windows代码页字符串 在python2中,您解码字符串:
with open('apache.log') as fp:
for line in fp:
print line.decode("unicode_escape")
但在python3中,您解码字节:
with open('apache.log', 'rb') as fp:
for line in fp:
print(line.decode("unicode_escape"), end="")
然后他仍然得到
“\\t”
。这一点帮助都没有。log('-\t--',r'-\t--',r'-\\t--')--这些都不会在日志中生成真正的选项卡。(刚刚核实,谁知道…@BerryTsakala:那么var呢?直接包含chr(9)
?或者制作一个包含chr(9)
的原始字符串(如在我编辑的响应中)?@Clodion-您缺少了一些东西:当同一个程序从控制台运行时,选项卡正确展开。但是当Apache处理STDERR时,它会用“\t”替换一个真正的选项卡,然后他仍然会得到“\\t”
。这一点帮助都没有。log('-\t--',r'-\t--',r'-\\t--')--这些都不会在日志中生成真正的选项卡。(刚刚核实,谁知道…@BerryTsakala:那么var呢?直接包含chr(9)
?或者制作一个包含chr(9)
的原始字符串(如在我编辑的响应中)?@Clodion-您缺少了一些东西:当同一个程序从控制台运行时,选项卡正确展开。但是当Apache处理STDERR时,它会用“\t”替换一个真正的选项卡,我已经用python编写了一个“tail-f”替换,并使用文本过滤器:)来解决这个问题。但我更希望有标签,实时的。或者,您的意思是可以在apache中安装日志过滤器模块吗?我已经用python编写了一个“tail-f”替换程序,使用文本过滤器:)来解决这个问题。但我更希望有标签,实时的。或者,您的意思是可以在apache中安装日志过滤器模块吗?