国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python3 logging 'ascii' codec can't

txgcwm / 3320人閱讀

摘要:環境問題發現最近剛從換到下搬磚,發現在跑的好好的代碼,在下終端老是報錯還是編碼錯誤注冊失敗坦白說,看到這個錯誤好無奈。既然能在跑,換到就出錯,那多半是環境問題了,然后我就開始了我的調試追蹤之旅了跟蹤調試先前調試都是一晃而過,只看結果。

環境: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 程序員都要知道的日志實踐

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44319.html

相關文章

  • 【python】[轉載]UnicodeEncodeError: 'ascii'

    摘要:原因在安裝時,默認的編碼是,當程序中出現非編碼時,的處理常常會報這樣的錯,不過在就不會有這樣的問題。 1、原因 python2.7在安裝時,默認的編碼是ascii,當程序中出現非ascii編碼時,python的處理常常會報這樣的錯,不過在python3就不會有這樣的問題。 2、解決辦法 臨時解決方法: 代碼中加入如下三行import sys reload(sys) sys.setd...

    Airy 評論0 收藏0
  • 通過 Certbot 安裝 Let's Encrypt 證書,來實現全站的 HTTPS 訪

    摘要:甚至和百度的搜索結果也正在給予的網站更高的排名和優先收錄權。由于預設的解碼器是,所以就不能識別中文。那理解了這個錯誤原因后,我這邊首先想到的就是網站的配置文件中是否含有中文。打開一看,確實存在中文注釋。 相關知識 HTTP/HTTPS 是什么? 簡單來說,HTTP 是一個傳輸網頁內容的協議,比如我們瀏覽一個網頁,網頁上的文字、圖片、 CSS 、 JS 等文件都是通過 HTTP 協議傳輸...

    Lsnsh 評論0 收藏0
  • 【Copy攻城獅日志】踩坑小程序之can't read property 'of

    摘要:根據當時的情境,是在微信開發者工具中刪掉該小程序然后重新載入就解決了,大家給出的結論是微信小程序開發者工具的。 Created 2019-4-2 22:17:34 by huqiUpdated 2019-4-2 23:17:34 by huqishowImg(https://segmentfault.com/img/bVbqOLH?w=1526&h=818); ↑開局一張圖,故事全靠編...

    hsluoyz 評論0 收藏0
  • Useful APIs that you probably don't notice

    摘要:結果 Date Get the number of days in a month The 0th day of next month is the last day of the current month. function daysInMonth(year, month) { let date = new Date(year, month + 1, 0); ret...

    崔曉明 評論0 收藏0

發表評論

0條評論

txgcwm

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<