Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
apache日志将选项卡字符显示为python脚本中的\t_Python_Apache - Fatal编程技术网

apache日志将选项卡字符显示为python脚本中的\t

apache日志将选项卡字符显示为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日志文件并查看选项卡 编辑 我放弃了。我正在使用另一个字符作为分隔符

在我的python程序(django或web.py)中,我将日志写入STDERR。e、 g

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中安装日志过滤器模块吗?