<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何在 Python 的日志中記錄異常的 traceback 信息?

          共 1298字,需瀏覽 3分鐘

           ·

          2022-05-24 16:22

          你好,我是征哥,寫 Python 的你可能會(huì)遇到這種情況,你知道程序報(bào)錯(cuò)了,因?yàn)檫@個(gè)異常沒(méi)有被捕捉,也不知道哪行代碼出錯(cuò)了,只能手工運(yùn)行一下看看哪里錯(cuò)了,但是,這個(gè)異常很難再次復(fù)現(xiàn)。

          要是在日志中記錄了這個(gè)異常的 traceback 信息就好了。

          本文就分享一下兩個(gè)方法,記錄異常的?traceback?

          方法一:使用 logger.exception

          logger.exception 方法可以將異常的 traceback 信息記錄到日志里,這里有一個(gè)小小的例子:

          import?logging

          logging.basicConfig(
          ????filename="./demo.log",
          ????level=logging.DEBUG,
          ????format="%(asctime)s?%(levelname)s?%(message)s",
          ????datefmt="%Y-%m-%d?%H:%M:%S",
          )


          def?func1():
          ????logging.info("func1?called")
          ????1?/?0


          def?func2():
          ????print("func2?called")


          def?main():
          ????func1()
          ????func2()


          if?__name__?==?"__main__":
          ????try:
          ????????main()
          ????except?Exception?as?e:
          ????????logging.exception(f"main?exception:?{str(e)}")
          ????????raise

          執(zhí)行該代碼之后,你會(huì)在當(dāng)前路徑下看到 demo.log 文件,其內(nèi)容如下:

          這樣當(dāng)發(fā)生異常時(shí),詳細(xì)信息可以在日志中看到。上述代碼里面用的是 logging.exception,使用 logger 也是可以的:

          logger?=?logging.getLogger()
          try:
          ????do_something()
          except?Exception?as?e:
          ????logger.exception("some?message")

          方法二:使用標(biāo)準(zhǔn)庫(kù) traceback

          導(dǎo)入標(biāo)準(zhǔn)庫(kù) traceback 后,我們還可以這樣來(lái)記錄異常的詳細(xì)信息:

          import?traceback

          #?此處代碼和方法一一樣

          if?__name__?==?"__main__":
          ????try:
          ????????main()
          ????except?Exception?as?e:
          ????????logging.error(f"main?Exception:?{traceback.format_exc()}")
          ????????raise

          這樣,運(yùn)行結(jié)果和方法一是一樣的,其中 traceback.format_exc 打印的就是異常的詳細(xì)信息。

          最后的話

          本文分享了日志記錄異常的方法,如果覺(jué)得有幫助,請(qǐng)點(diǎn)贊、轉(zhuǎn)發(fā)、在看。如果技術(shù)問(wèn)題歡迎添加微信「somenzz」,回復(fù)「技術(shù)交流」,拉你加入純技術(shù)交流群,一起討論。

          推薦閱讀:

          最簡(jiǎn)單的方式發(fā)送郵件,讓程序出錯(cuò)自動(dòng)發(fā)郵件


          瀏覽 29
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99亚洲婷婷伊人五月天久久欧美 | 91精品国产日韩91久久久久久 | 亚洲欧洲AV | 99热这里只有精品在线观看 | 亚洲婷婷丁香五月天 |