小编Ted*_*uba的帖子

UTF-8在Python日志中,如何?

我正在尝试使用Python的日志包将UTF-8编码的字符串记录到文件中.作为玩具示例:

import logging

def logging_test():
    handler = logging.FileHandler("/home/ted/logfile.txt", "w",
                                  encoding = "UTF-8")
    formatter = logging.Formatter("%(message)s")
    handler.setFormatter(formatter)
    root_logger = logging.getLogger()
    root_logger.addHandler(handler)
    root_logger.setLevel(logging.INFO)

    # This is an o with a hat on it.
    byte_string = '\xc3\xb4'
    unicode_string = unicode("\xc3\xb4", "utf-8")

    print "printed unicode object: %s" % unicode_string

    # Explode
    root_logger.info(unicode_string)

if __name__ == "__main__":
    logging_test()
Run Code Online (Sandbox Code Playgroud)

这会在logging.info()调用中与UnicodeDecodeError一起爆炸.

在较低级别,Python的日志包使用编解码器包打开日志文件,传递"UTF-8"参数作为编码.这一切都很好,但它试图将字节字符串写入文件而不是unicode对象,这会爆炸.从本质上讲,Python正在这样做:

file_handler.write(unicode_string.encode("UTF-8"))
Run Code Online (Sandbox Code Playgroud)

什么时候应该这样做:

file_handler.write(unicode_string)
Run Code Online (Sandbox Code Playgroud)

这是Python中的一个错误,还是我正在服用疯狂的药丸?FWIW,这是一个库存Python 2.6安装.

python unicode logging

44
推荐指数
4
解决办法
4万
查看次数

BerkeleyDB并发

  • BerkeleyDB的C++实现可以合理地支持什么是最佳并发级别?
  • 在吞吐量因资源争用而开始遭受损失之前,我可以在数据库中攻击多少线程?

我已阅读手册并知道如何设置锁,锁柜,数据库页面大小等数量,但我只是喜欢有BDB并发实际经验的人的一些建议.

我的应用程序非常简单,我将进行获取和放置大约1KB的记录.没有游标,没有删除.

c++ berkeley-db

30
推荐指数
3
解决办法
2138
查看次数

Python相当于Jstack?

有没有相当于jstack的python?我有一个挂起的过程,我真的想看看它是什么,因为我还没有重现开发中的缺陷.

python

5
推荐指数
1
解决办法
1989
查看次数

标签 统计

python ×2

berkeley-db ×1

c++ ×1

logging ×1

unicode ×1