python3 logging 'ascii' codec can't encode characters

2023-05-16

环境:mac 10.12  python3  django 1.10

问题发现

最近刚从arch 换到 mac下搬砖, 发现在arch跑的好好的代码,在mac下 终端老是报错 .... 还是编码错误...

code:

try:
    int('sdfasdf')
except Exception as e:
    logger.error( (u' 注册失败 ' + str(e)) )
    return render(request, 'user/register.html')
        

error:

--- Logging error ---
Traceback (most recent call last):
  File "../repository/apps/user/views.py", line 104, in post
    int('sdfasdf')
ValueError: invalid literal for int() with base 10: 'sdfasdf'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/logging/__init__.py", line 983, in emit
    stream.write(msg)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 91-94: ordinal not in range(128)   

坦白说,看到这个错误好无奈。既然能在Linux跑,换到mac就出错,那多半是环境问题了,然后我就开始了我的调试追踪之旅了

跟踪调试

先前调试都是一晃而过,只看结果。 然并软,并没有什么用,后面耐着性子单独调试

首先从错误点开始:

/usr/local/Cellar/python3/3.5.2_3/Frameworks/Python.framework/Versions/3.5/lib/python3.5/logging/__init__.py line: 982

图片描述

发现这里出现ASCII编码,感觉拿到钥匙了~~

然后顺藤摸瓜,去看了 这个 stream 的初始化,发现标准的stderr 读写都是 encoding='utf-8',

但是读写日志文件就指定了 ASCII编码。

解决

知道了原因,就好解决了,google 一圈未果,马丹,竟然百度一下就知道怎么写(应该是歪果仁都不会有这个问题吧)

在 LOGGING 的 handlers 中配置编码就行了

    'debug': {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': 'log/debug.log',
        'maxBytes': 1024 * 1024 * 5,
        'backupCount': 5,
        'formatter': 'standard',
        "encoding": "utf8"
    },

参考链接:每个 Python 程序员都要知道的日志实践

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python3 logging 'ascii' codec can't encode characters 的相关文章

随机推荐

  • Landsat Tm5辐射定标和大气校正(转)

    一 辐射定标 1 由于ENVI 4 4 中有专门进行辐射定标的模块 xff0c 因此实际的操作十分简单 将原始TM 影像打开以后 xff0c 选择 Basic Tools Preprocessing Calibration Utilitie
  • Traversing the Dept Security tree

    We can use the connect by prior function provided by Oracle to traverse the Dept security Tree Suppose an Organization h
  • Reconfigurable computing[可重构计算]

    在实验室跟老师做一些硬件加速相关的东西 xff0c 看文献时看到Reconfigurable computing xff0c 发现这个很有意思 现在每天都有越来越多的数据产生 xff0c 要处理这些数据如果单纯用CPU计算的话会耗费很多时间
  • 嵌入式作业STM32采用串口DMA方式发送数据

    目录 前言 要求 一 DMA的基本介绍 DMA的基本定义 DMA的主要特征 STM32F411x系列芯片DMA控制器 二 通过CubeMX配置项目 1 创建项目 2 选择芯片STM32F103C8T6 3 设置RCC 4 设置串口 5 设置
  • C ~ char int 等数据转换问题

    1 xff0c char型数字转换为int型 char a 61 34 32 34 printf 34 d n 34 a 0 39 0 39 输出结果为3 2 xff0c int转化为char 1 字符串转换成数字 xff0c 用atoi
  • curl get请求添加header头信息

    function get url ch 61 curl init curl setopt ch CURLOPT HTTPGET true curl setopt ch CURLOPT RETURNTRANSFER 1 TRUE 将curl
  • 关于 RESTFUL API 安全认证方式的一些总结

    常用认证方式 在之前的文章 REST API 安全设计指南 与 使用 AngularJS amp NodeJS 实现基于 token 的认证应用 两篇文章中 xff0c 译 web权限验证方法说明 中也详细介绍 xff0c 一般基于REST
  • C++ REST SDK的基本用法

    微软开发了一个开源跨平台的http库 C 43 43 REST SDK xff08 http casablanca codeplex com xff09 xff0c 又名卡萨布兰卡Casablanca xff0c 有个电影也叫这个名字 xf
  • ubuntu下socket通信

    之前的博文介绍了如何在ubuntu下实现unix domain socket通信 xff0c 但只是本地的通信 xff0c 虽然过程和网络通信很类似 xff0c 但这里还是有必要了解下真正的socket通信 首先贴出server端的c代码
  • c语言中宏定义中void,C语言中宏定义几道问题!

    C语言中宏定义几道问题 xff01 答案 1 信息版本 xff1a 手机版 解决时间 2020 04 27 20 44 已解决 2020 04 27 17 15 一 执行下列程序 define MA x y x y k 61 5 k 61
  • IE浏览器自动配置脚本的使用(代理上网)

    以前在FireFox中设置过代理服务器自动配置脚本 xff0c 对于访问某些无法访问的网站非常有效 xff0c 在IE中应该也是有效的 xff0c 但是我配置了好几次都没有配置成功 xff0c 今天发现原来是格式错误 xff0c 修改了一下
  • c语言中通过指针将数值赋值到制定内存地址

    1 一种直观的方法 假设现在需要往内存0x12ff7c地址上存入一个整型数0x100 我们怎么才能做到呢 xff1f 我们知道可以通过一个指针 向其指向的内存地址写入 数据 xff0c 那么这里的内存地址0x12ff7c其本质不就是一个指针
  • 一个封装HTTP请求的函数(C++)

    这里封装 了HTTP请求的 xff0c 支持GET与POST xff0c 并支持各种参数组合 xff0c 调用方式很简单 使用DEVWEB WebRequest string http www luaie com ret 就可以了 如果使用
  • c++ vector 用法总结

    vector 是向量类型 xff0c 它可以容纳许多类型的数据 xff0c 如若干个整数 xff0c 所以称其为容器 vector 是C 43 43 STL的一个重要成员 xff0c 使用它时需要包含头文件 xff1a include lt
  • ubuntu命令行语法_HTTPie:超爽的HTTP命令行客户端

    之前在命令行下进行HTTP服务的调试和信息查看都是使用经典的cURL xff0c 不过前段时间发现一个交互更加友好的工具 xff0c 就是HTTPie 先放一个HTTPie官方的一个HTTPie VS cURL的图给大家看看 如果你经常需要
  • 如何用c语言串口通讯,串口通信入门

    在讲解本章的内容之前请大家先反复阅读 手把手教你学51单片机 文档的第11章内容 xff0c 很多概念文档都已详细讲解有 1 波特率 串口通信就是单片机与电脑端 xff0c 单片机与单片机 xff0c 单片机与模块器件之间互发信息进行通信
  • php和js区别

    php和js区别 两者在语法上类似 xff0c 楼上说的对 xff0c js 61 javascript是工作在浏览器端的脚本语言 xff0c 他所提交的数据是交给浏览器来处理的 但是现在的Ajax技术已经可以把js提交的数据交付到浏览器来
  • web前端利用turf.js生成等值线、等值面

    样例如下 xff1a lt DOCTYPE html gt lt html xmlns 61 34 http www w3 org 1999 xhtml 34 gt lt head gt lt meta http equiv 61 34 C
  • python模块名和文件名冲突解决

    对于python初学者 xff0c 很容易练习到一个随机数生成的程序 xff0c 代码如下 xff1a 1 usr bin python 2 import random 3 print random randint 12 20 这个小程序最
  • python3 logging 'ascii' codec can't encode characters

    环境 xff1a mac 10 12 python3 django 1 10 问题发现 最近刚从arch 换到 mac下搬砖 xff0c 发现在arch跑的好好的代码 xff0c 在mac下 终端老是报错 还是编码错误 code try i