{"id":937,"date":"2021-03-08T13:54:31","date_gmt":"2021-03-08T05:54:31","guid":{"rendered":"http:\/\/www.mustenaka.cn\/?p=937"},"modified":"2021-03-08T15:15:27","modified_gmt":"2021-03-08T07:15:27","slug":"python-loggingmodel","status":"publish","type":"post","link":"https:\/\/www.mustenaka.cn\/index.php\/2021\/03\/08\/python-loggingmodel\/","title":{"rendered":"Python logging\u6a21\u5757\uff08\u65e5\u5fd7\u5904\u7406\uff09"},"content":{"rendered":"<p>Python\u7684logging\u6a21\u5757\uff1a\u65e5\u5fd7\u5904\u7406<\/p>\n<p><!--more--><\/p>\n<h3>\u65e5\u5fd7\u6982\u5ff5&amp;\u4ecb\u7ecd\uff1a\u0010<\/h3>\n<p>\u65e5\u5fd7\u53ef\u4ee5\u8ffd\u8e2a\u8bb0\u5f55\u8f6f\u4ef6\u8fd0\u884c\u65f6\u53d1\u751f\u65f6\u95f4\u7684\u65b9\u6cd5\u3002\u4e0d\u4ec5\u4ec5\u662f\u62a5\u9519\u5904\u7406\uff0c\u8fd8\u53ef\u4ee5\u505a\u5230\u4e00\u4e9b\u4e8b\u4ef6\u53d1\u751f\u65f6\u7684\u8bb0\u5f55\uff0c\u4ee5\u53ca\u5bf9\u65f6\u95f4\u7684\u5b9a\u6027\u63cf\u8ff0\u3002\u56e0\u6b64\uff0c\u4e8b\u4ef6\u4e5f\u5f15\u7533\u51fa\u4e86\u4e00\u4e2a\u91cd\u8981\u6027\u6982\u5ff5\uff0c\u79f0\u4e4b\u4e3a\u4e25\u91cd\u6027\u7ea7\u522b\uff08level\uff09<\/p>\n<p>Python\u7684logging\u6a21\u5757\u6bd4\u8f83\u7075\u6d3b\uff0c\u4f7f\u5f97\u53ef\u4ee5\u548c\u4efb\u4f55\u7b2c\u4e09\u65b9\u5e93\u4ee3\u7801\u76f8\u4e92\u7ed3\u5408\u8fdb\u884c\u65e5\u5fd7\u751f\u6210\uff0c\u800c\u4e14\u76f8\u6bd4\u8f83\u4e8eprint\u5c06\u4fe1\u606f\u7edf\u7edf\u8f93\u51fa\u5230\u8f93\u5165\u8f93\u51fa\u6d41\u4e2d\uff0clogging\u6a21\u5757\u53ef\u4ee5\u505a\u5230\u5199\u5165\u6587\u4ef6\uff0c\u8f93\u51fa\u5230\u8f93\u51fa\u6d41\uff0c\u751a\u81f3\u5199\u5165\u8fdc\u7a0b\u670d\u52a1\u5668\u7b49\uff0c\u6b64\u5916\u8fd8\u5177\u6709\u7075\u6d3b\u7684\u914d\u7f6e\u65b9\u6cd5\u548c\u683c\u5f0f\u5316\u529f\u80fd\uff0c\u53ef\u4ee5\u683c\u5f0f\u5316\u751f\u6210\u4fe1\u606f\u65f6\u95f4\uff0c\u4e25\u91cd\u7a0b\u5ea6\u7b49\u7b49\u4fe1\u606f\u3002<\/p>\n<p>logging\u4e3b\u8981\u7531\u5982\u4e0b\u56db\u4e2a\u6a21\u5757\u7ec4\u4ef6\u7ec4\u6210<\/p>\n<ul>\n<li>Loggers: \u3010\u8bb0\u5f55\u5668\u3011\u53ef\u4f9b\u7a0b\u5e8f\u76f4\u63a5\u8c03\u7528\u7684\u63a5\u53e3<\/li>\n<li>Handlers: \u3010\u5904\u7406\u5668\u3011\u51b3\u5b9a\u5c06\u65e5\u5fd7\u8bb0\u5f55\u5206\u914d\u81f3\u6b63\u786e\u7684\u76ee\u7684\u5730<\/li>\n<li>Filters: \u3010\u8fc7\u6ee4\u5668\u3011\u63d0\u4f9b\u66f4\u7ec6\u7c92\u5ea6\u7684\u65e5\u5fd7\u662f\u5426\u8f93\u51fa\u7684\u5224\u65ad<\/li>\n<li>Formatters: \u3010\u683c\u5f0f\u5316\u5668\u3011\u5236\u5b9a\u6700\u7ec8\u8bb0\u5f55\u6253\u5370\u7684\u683c\u5f0f\u5e03\u5c40<\/li>\n<\/ul>\n<h4>1.loggers<\/h4>\n<p>loggers \u5c31\u662f\u7a0b\u5e8f\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528\u7684\u4e00\u4e2a\u65e5\u5fd7\u63a5\u53e3\uff0c\u53ef\u4ee5\u76f4\u63a5\u5411logger\u5199\u5165\u65e5\u5fd7\u4fe1\u606f\uff0clogger\u5e76\u4e0d\u662f\u76f4\u63a5\u5b9e\u4f8b\u5316\u4f7f\u7528\u7684\uff0c\u800c\u662f\u901a\u8fc7logging.getLogger(name)\u6765\u83b7\u53d6\u5bf9\u8c61\uff0c\u6709\u65f6\u5019\u7b80\u5355\u70b9\u4e5f\u53ef\u4ee5\u76f4\u63a5\u628aname\u4e0d\u586b\u5199\u3002\u901a\u5e38\u60c5\u51b5\u4e0b\uff0clogger\u7684\u540d\u5b57\u6211\u4eec\u9700\u8981\u5bf9\u5e94\u6a21\u5757\u540d\uff0c\u5982\u901a\u884c\u534f\u8bae\u6a21\u5757\uff0c\u6570\u636e\u5e93\u6a21\u5757 \uff0c\u903b\u8f91\u5c42\u6a21\u5757\uff0c\u4e1a\u52a1\u5c42\u6a21\u5757\uff0c\u9a8c\u8bc1\u7a97\u53e3\u6a21\u5757\uff0c\u7b97\u6cd5\u6a21\u5757\u7b49\u7b49\u4fe1\u606f\u3002<\/p>\n<p>logging\u65e5\u5fd7\u7ea7\u522b<\/p>\n<div class=\"supsystic-table-loader spinner\"style=\"background-color:#000000\"><\/div><div id=\"supsystic-table-11_22745\" class=\"supsystic-tables-wrap \" style=\" width:100%; visibility: hidden; \" data-table-width-fixed=\"100%\" data-table-width-mobile=\"100%\" ><table id=\"supsystic-table-11\" class=\"supsystic-table border lightboxImg cell-border\" data-id=\"11\" data-view-id=\"11_22745\" data-title=\"Python logging\u65e5\u5fd7\u7ea7\u522b\" data-currency-format=\"$1,000.00\" data-percent-format=\"10.00%\" data-date-format=\"DD.MM.YYYY\" data-time-format=\"HH:mm\" data-features=\"[&quot;after_table_loaded_script&quot;]\" data-search-value=\"\" data-lightbox-img=\"\" data-head-rows-count=\"1\" data-pagination-length=\"50,100,All\" data-auto-index=\"off\" data-searching-settings=\"{&quot;columnSearchPosition&quot;:&quot;bottom&quot;,&quot;minChars&quot;:&quot;0&quot;}\" data-lang=\"default\" data-override=\"{&quot;emptyTable&quot;:&quot;&quot;,&quot;info&quot;:&quot;&quot;,&quot;infoEmpty&quot;:&quot;&quot;,&quot;infoFiltered&quot;:&quot;&quot;,&quot;lengthMenu&quot;:&quot;&quot;,&quot;search&quot;:&quot;&quot;,&quot;zeroRecords&quot;:&quot;&quot;,&quot;exportLabel&quot;:&quot;&quot;,&quot;file&quot;:&quot;default&quot;}\" data-merged=\"[]\" data-responsive-mode=\"0\" data-from-history=\"0\" ><thead><tr><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><\/tr><\/thead><tbody><tr style=\"height:px\" ><td data-cell-id=\"A1\" data-x=\"0\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u540d\u79f0\" data-order=\"\u540d\u79f0\" style=\"min-width:11.1409%; \" >\u540d\u79f0 <\/td><td data-cell-id=\"B1\" data-x=\"1\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5bf9\u5e94\u51fd\u6570\" data-order=\"\u5bf9\u5e94\u51fd\u6570\" style=\"min-width:18.1208%; \" >\u5bf9\u5e94\u51fd\u6570 <\/td><td data-cell-id=\"C1\" data-x=\"2\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u63cf\u8ff0\" data-order=\"\u63cf\u8ff0\" style=\"min-width:62.2819%; \" >\u63cf\u8ff0 <\/td><td data-cell-id=\"D1\" data-x=\"3\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u4e25\u91cd\u5ea6\" data-order=\"\u4e25\u91cd\u5ea6\" style=\"min-width:8.4564%; \" >\u4e25\u91cd\u5ea6 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A2\" data-x=\"0\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"NOTSET\" data-order=\"NOTSET\" >NOTSET <\/td><td data-cell-id=\"B2\" data-x=\"1\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"\" data-order=\"\" ><\/td><td data-cell-id=\"C2\" data-x=\"2\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"0\u7ea7\u522b\uff0c\u76f8\u5f53\u4e8e\u6ca1\u6709\" data-order=\"0\u7ea7\u522b\uff0c\u76f8\u5f53\u4e8e\u6ca1\u6709\" >0\u7ea7\u522b\uff0c\u76f8\u5f53\u4e8e\u6ca1\u6709 <\/td><td data-cell-id=\"D2\" data-x=\"3\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"0\" data-order=\"0\" >0 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A3\" data-x=\"0\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"DEBUG\" data-order=\"DEBUG\" >DEBUG <\/td><td data-cell-id=\"B3\" data-x=\"1\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"logging.debug()\" data-order=\"logging.debug()\" >logging.debug() <\/td><td data-cell-id=\"C3\" data-x=\"2\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u6700\u4f4e\u7ea7\u522b\uff0c\u7528\u4e8e\u5c0f\u7ec6\u8282\uff0c\u901a\u5e38\u53ea\u6709\u5728\u8bca\u65ad\u65f6\u624d\u5173\u5fc3\u6b64\u6d88\u606f\" data-order=\"\u6700\u4f4e\u7ea7\u522b\uff0c\u7528\u4e8e\u5c0f\u7ec6\u8282\uff0c\u901a\u5e38\u53ea\u6709\u5728\u8bca\u65ad\u65f6\u624d\u5173\u5fc3\u6b64\u6d88\u606f\" >\u6700\u4f4e\u7ea7\u522b\uff0c\u7528\u4e8e\u5c0f\u7ec6\u8282\uff0c\u901a\u5e38\u53ea\u6709\u5728\u8bca\u65ad\u65f6\u624d\u5173\u5fc3\u6b64\u6d88\u606f <\/td><td data-cell-id=\"D3\" data-x=\"3\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"10\" data-order=\"10\" >10 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A4\" data-x=\"0\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"INFO\" data-order=\"INFO\" >INFO <\/td><td data-cell-id=\"B4\" data-x=\"1\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"logging.info()\" data-order=\"logging.info()\" >logging.info() <\/td><td data-cell-id=\"C4\" data-x=\"2\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u7528\u4e8e\u8bb0\u5f55\u7a0b\u5e8f\u4e2d\u4e00\u822c\u65f6\u95f4\u7684\u4fe1\u606f\uff0c\u6216\u786e\u8ba4\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38\" data-order=\"\u7528\u4e8e\u8bb0\u5f55\u7a0b\u5e8f\u4e2d\u4e00\u822c\u65f6\u95f4\u7684\u4fe1\u606f\uff0c\u6216\u786e\u8ba4\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38\" >\u7528\u4e8e\u8bb0\u5f55\u7a0b\u5e8f\u4e2d\u4e00\u822c\u65f6\u95f4\u7684\u4fe1\u606f\uff0c\u6216\u786e\u8ba4\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38 <\/td><td data-cell-id=\"D4\" data-x=\"3\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"20\" data-order=\"20\" >20 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A5\" data-x=\"0\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"WARNING\" data-order=\"WARNING\" >WARNING <\/td><td data-cell-id=\"B5\" data-x=\"1\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"logging.warning()\" data-order=\"logging.warning()\" >logging.warning() <\/td><td data-cell-id=\"C5\" data-x=\"2\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u7528\u4e8e\u8868\u793a\u53ef\u80fd\u7684\u95ee\u9898\uff0c\u4e0d\u4f1a\u963b\u6b62\u7a0b\u5e8f\u5de5\u4f5c\uff0c\u4f46\u662f\u5c06\u6765\u53ef\u80fd\u4f1a\" data-order=\"\u7528\u4e8e\u8868\u793a\u53ef\u80fd\u7684\u95ee\u9898\uff0c\u4e0d\u4f1a\u963b\u6b62\u7a0b\u5e8f\u5de5\u4f5c\uff0c\u4f46\u662f\u5c06\u6765\u53ef\u80fd\u4f1a\" >\u7528\u4e8e\u8868\u793a\u53ef\u80fd\u7684\u95ee\u9898\uff0c\u4e0d\u4f1a\u963b\u6b62\u7a0b\u5e8f\u5de5\u4f5c\uff0c\u4f46\u662f\u5c06\u6765\u53ef\u80fd\u4f1a <\/td><td data-cell-id=\"D5\" data-x=\"3\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"30\" data-order=\"30\" >30 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A6\" data-x=\"0\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"ERROR\" data-order=\"ERROR\" >ERROR <\/td><td data-cell-id=\"B6\" data-x=\"1\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"logging.error()\" data-order=\"logging.error()\" >logging.error() <\/td><td data-cell-id=\"C6\" data-x=\"2\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u7528\u4e8e\u8bb0\u5f55\u9519\u8bef\uff0c\u5b83\u5bfc\u81f4\u7a0b\u5e8f\u5728\u67d0\u4e9b\u529f\u80fd\u4e0a\u5931\u8d25\" data-order=\"\u7528\u4e8e\u8bb0\u5f55\u9519\u8bef\uff0c\u5b83\u5bfc\u81f4\u7a0b\u5e8f\u5728\u67d0\u4e9b\u529f\u80fd\u4e0a\u5931\u8d25\" >\u7528\u4e8e\u8bb0\u5f55\u9519\u8bef\uff0c\u5b83\u5bfc\u81f4\u7a0b\u5e8f\u5728\u67d0\u4e9b\u529f\u80fd\u4e0a\u5931\u8d25 <\/td><td data-cell-id=\"D6\" data-x=\"3\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"40\" data-order=\"40\" >40 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A7\" data-x=\"0\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"CRITICAL\" data-order=\"CRITICAL\" >CRITICAL <\/td><td data-cell-id=\"B7\" data-x=\"1\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"logging.critical()\" data-order=\"logging.critical()\" >logging.critical() <\/td><td data-cell-id=\"C7\" data-x=\"2\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u6700\u9ad8\u7ea7\u522b\uff0c\u8868\u793a\u81f4\u547d\u9519\u8bef\uff0c\u5b83\u5c06\u4f1a\u5bfc\u81f4\u7a0b\u5e8f\u5b8c\u5168\u505c\u6b62\u5de5\u4f5c\" data-order=\"\u6700\u9ad8\u7ea7\u522b\uff0c\u8868\u793a\u81f4\u547d\u9519\u8bef\uff0c\u5b83\u5c06\u4f1a\u5bfc\u81f4\u7a0b\u5e8f\u5b8c\u5168\u505c\u6b62\u5de5\u4f5c\" >\u6700\u9ad8\u7ea7\u522b\uff0c\u8868\u793a\u81f4\u547d\u9519\u8bef\uff0c\u5b83\u5c06\u4f1a\u5bfc\u81f4\u7a0b\u5e8f\u5b8c\u5168\u505c\u6b62\u5de5\u4f5c <\/td><td data-cell-id=\"D7\" data-x=\"3\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"50\" data-order=\"50\" >50 <\/td><\/tr><\/tbody><\/table><!-- \/#supsystic-table-11.supsystic-table --><\/div><!-- \/.supsystic-tables-wrap --><!-- Tables Generator by Supsystic --><!-- Version:1.11.1 --><!-- http:\/\/supsystic.com\/ --><a title=\"Table Plugin\" style=\"display:none;\" href=\"https:\/\/supsystic.com\/plugins\/wordpress-data-table-plugin\/?utm_medium=love_link\" target=\"_blank\">Table Plugin<\/a>\n<p>\u76f8\u5173API\u6709<\/p>\n<ul>\n<li>Logger.setLevel()\u6307\u5b9alogger\u5c06\u4f1a\u5904\u7406\u7684\u6700\u4f4e\u7684\u5b89\u5168\u7b49\u7ea7\u65e5\u5fd7\u4fe1\u606f\u3002<\/li>\n<li>Logger.addHandler()\u548cLogger.removeHandler()\u4ece\u8bb0\u5f55\u5668\u5bf9\u8c61\u4e2d\u6dfb\u52a0\u548c\u5220\u9664\u5904\u7406\u7a0b\u5e8f\u5bf9\u8c61\u3002\u5904\u7406\u5668\u8be6\u89c1Handlers\u3002<\/li>\n<li>Logger.addFilter()\u548cLogger.removeFilter()\u4ece\u8bb0\u5f55\u5668\u5bf9\u8c61\u6dfb\u52a0\u548c\u5220\u9664\u8fc7\u6ee4\u5668\u5bf9\u8c61\u3002<\/li>\n<\/ul>\n<h4>2.Handlers<\/h4>\n<div>\n<div>\n<p>Handlers \u5c06logger\u53d1\u8fc7\u6765\u7684\u4fe1\u606f\u8fdb\u884c\u51c6\u786e\u5730\u5206\u914d\uff0c\u9001\u5f80\u6b63\u786e\u7684\u5730\u65b9\u3002\u4e3e\u4e2a\u6817\u5b50\uff0c\u9001\u5f80\u63a7\u5236\u53f0\u6216\u8005\u6587\u4ef6\u6216\u8005both\u6216\u8005\u5176\u4ed6\u5730\u65b9(\u8fdb\u7a0b\u7ba1\u9053\u4e4b\u7c7b\u7684)\u3002\u5b83\u51b3\u5b9a\u4e86\u6bcf\u4e2a\u65e5\u5fd7\u7684\u884c\u4e3a\uff0c\u662f\u4e4b\u540e\u9700\u8981\u914d\u7f6e\u7684\u91cd\u70b9\u533a\u57df\u3002<\/p>\n<p>\u6bcf\u4e2aHandler\u540c\u6837\u6709\u4e00\u4e2a\u65e5\u5fd7\u7ea7\u522b\uff0c\u4e00\u4e2alogger\u53ef\u4ee5\u62e5\u6709\u591a\u4e2ahandler\u4e5f\u5c31\u662f\u8bf4logger\u53ef\u4ee5\u6839\u636e\u4e0d\u540c\u7684\u65e5\u5fd7\u7ea7\u522b\u5c06\u65e5\u5fd7\u4f20\u9012\u7ed9\u4e0d\u540c\u7684handler\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u76f8\u540c\u7684\u7ea7\u522b\u4f20\u9012\u7ed9\u591a\u4e2ahandlers\u8fd9\u5c31\u6839\u636e\u9700\u6c42\u6765\u7075\u6d3b\u7684\u8bbe\u7f6e\u4e86\u3002<\/p>\n<\/div>\n<\/div>\n<p>\u5e38\u7528API\u6709<\/p>\n<ul>\n<li>\u00a0logging.StreamHandler -&gt;\u00a0\u63a7\u5236\u53f0\u8f93\u51fa<\/li>\n<li>\u00a0logging.FileHandler\u00a0 -&gt;\u00a0\u6587\u4ef6\u8f93\u51fa<\/li>\n<li>logging.handlers.RotatingFileHandler\u00a0-&gt;\u00a0\u6309\u7167\u5927\u5c0f\u81ea\u52a8\u5206\u5272\u65e5\u5fd7\u6587\u4ef6\uff0c\u4e00\u65e6\u8fbe\u5230\u6307\u5b9a\u7684\u5927\u5c0f\u91cd\u65b0\u751f\u6210\u6587\u4ef6<\/li>\n<li>logging.handlers.TimedRotatingFileHandler\u00a0 -&gt;\u00a0\u6309\u7167\u65f6\u95f4\u81ea\u52a8\u5206\u5272\u65e5\u5fd7\u6587\u4ef6<\/li>\n<\/ul>\n<h4>3.Filters<\/h4>\n<div>\n<div>\n<p>Filters \u63d0\u4f9b\u4e86\u66f4\u7ec6\u7c92\u5ea6\u7684\u5224\u65ad\uff0c\u6765\u51b3\u5b9a\u65e5\u5fd7\u662f\u5426\u9700\u8981\u6253\u5370\u3002\u539f\u5219\u4e0ahandler\u83b7\u5f97\u4e00\u4e2a\u65e5\u5fd7\u5c31\u5fc5\u5b9a\u4f1a\u6839\u636e\u7ea7\u522b\u88ab\u7edf\u4e00\u5904\u7406\uff0c\u4f46\u662f\u5982\u679chandler\u62e5\u6709\u4e00\u4e2aFilter\u53ef\u4ee5\u5bf9\u65e5\u5fd7\u8fdb\u884c\u989d\u5916\u7684\u5904\u7406\u548c\u5224\u65ad\u3002\u4f8b\u5982Filter\u80fd\u591f\u5bf9\u6765\u81ea\u7279\u5b9a\u6e90\u7684\u65e5\u5fd7\u8fdb\u884c\u62e6\u622aor\u4fee\u6539\u751a\u81f3\u4fee\u6539\u5176\u65e5\u5fd7\u7ea7\u522b\uff08\u4fee\u6539\u540e\u518d\u8fdb\u884c\u7ea7\u522b\u5224\u65ad\uff09\u3002<\/p>\n<p>logger\u548chandler\u90fd\u53ef\u4ee5\u5b89\u88c5filter\u751a\u81f3\u53ef\u4ee5\u5b89\u88c5\u591a\u4e2afilter\u4e32\u8054\u8d77\u6765\u3002<\/p>\n<\/div>\n<\/div>\n<h4>4.Formatters<\/h4>\n<div>\n<div>Formatters \u6307\u5b9a\u4e86\u6700\u7ec8\u67d0\u6761\u8bb0\u5f55\u6253\u5370\u7684\u683c\u5f0f\u5e03\u5c40\u3002Formatter\u4f1a\u5c06\u4f20\u9012\u6765\u7684\u4fe1\u606f\u62fc\u63a5\u6210\u4e00\u6761\u5177\u4f53\u7684\u5b57\u7b26\u4e32\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0bFormat\u53ea\u4f1a\u5c06%(message)s\u4fe1\u606f\u76f4\u63a5\u6253\u5370\u51fa\u6765\u3002Format\u4e2d\u6709\u4e00\u4e9b\u81ea\u5e26\u7684LogRecord\u5c5e\u6027\u53ef\u4ee5\u4f7f\u7528\uff0c\u5982\u4e0b\u8868\u683c:<\/div>\n<\/div>\n<div>\n<div class=\"supsystic-table-loader spinner\"style=\"background-color:#000000\"><\/div><div id=\"supsystic-table-12_89104\" class=\"supsystic-tables-wrap \" style=\" width:100%; visibility: hidden; \" data-table-width-fixed=\"100%\" data-table-width-mobile=\"100%\" ><table id=\"supsystic-table-12\" class=\"supsystic-table border lightboxImg cell-border\" data-id=\"12\" data-view-id=\"12_89104\" data-title=\"Python logging\u7684formatters\" data-currency-format=\"$1,000.00\" data-percent-format=\"10.00%\" data-date-format=\"DD.MM.YYYY\" data-time-format=\"HH:mm\" data-features=\"[&quot;after_table_loaded_script&quot;]\" data-search-value=\"\" data-lightbox-img=\"\" data-head-rows-count=\"1\" data-pagination-length=\"50,100,All\" data-auto-index=\"off\" data-searching-settings=\"{&quot;columnSearchPosition&quot;:&quot;bottom&quot;,&quot;minChars&quot;:&quot;0&quot;}\" data-lang=\"default\" data-override=\"{&quot;emptyTable&quot;:&quot;&quot;,&quot;info&quot;:&quot;&quot;,&quot;infoEmpty&quot;:&quot;&quot;,&quot;infoFiltered&quot;:&quot;&quot;,&quot;lengthMenu&quot;:&quot;&quot;,&quot;search&quot;:&quot;&quot;,&quot;zeroRecords&quot;:&quot;&quot;,&quot;exportLabel&quot;:&quot;&quot;,&quot;file&quot;:&quot;default&quot;}\" data-merged=\"[]\" data-responsive-mode=\"0\" data-from-history=\"0\" ><thead><tr><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><th class=\"\" style=\"width:; padding: 0 !important;\"><\/th><\/tr><\/thead><tbody><tr style=\"height:px\" ><td data-cell-id=\"A1\" data-x=\"0\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"asctime\" data-order=\"asctime\" style=\"min-width:12.2124%; \" >asctime <\/td><td data-cell-id=\"B1\" data-x=\"1\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(asctime)s\" data-order=\"%(asctime)s\" style=\"min-width:19.292%; \" >%(asctime)s <\/td><td data-cell-id=\"C1\" data-x=\"2\" data-y=\"1\" data-db-index=\"1\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5c06\u65e5\u5fd7\u7684\u65f6\u95f4\u6784\u9020\u6210\u53ef\u8bfb\u7684\u5f62\u5f0f\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u20182021-03-08 12:00:00,123\u2019\u7cbe\u786e\u5230\u6beb\u79d2\" data-order=\"\u5c06\u65e5\u5fd7\u7684\u65f6\u95f4\u6784\u9020\u6210\u53ef\u8bfb\u7684\u5f62\u5f0f\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u20182021-03-08 12:00:00,123\u2019\u7cbe\u786e\u5230\u6beb\u79d2\" style=\"min-width:68.4956%; \" >\u5c06\u65e5\u5fd7\u7684\u65f6\u95f4\u6784\u9020\u6210\u53ef\u8bfb\u7684\u5f62\u5f0f\uff0c\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u662f\u20182021-03-08 12:00:00,123\u2019\u7cbe\u786e\u5230\u6beb\u79d2 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A2\" data-x=\"0\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"filename\" data-order=\"filename\" >filename <\/td><td data-cell-id=\"B2\" data-x=\"1\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(filename)s\" data-order=\"%(filename)s\" >%(filename)s <\/td><td data-cell-id=\"C2\" data-x=\"2\" data-y=\"2\" data-db-index=\"2\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5305\u542bpath\u7684\u6587\u4ef6\u540d\" data-order=\"\u5305\u542bpath\u7684\u6587\u4ef6\u540d\" >\u5305\u542bpath\u7684\u6587\u4ef6\u540d <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A3\" data-x=\"0\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"funcName\" data-order=\"funcName\" >funcName <\/td><td data-cell-id=\"B3\" data-x=\"1\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(funcName)s\" data-order=\"%(funcName)s\" >%(funcName)s <\/td><td data-cell-id=\"C3\" data-x=\"2\" data-y=\"3\" data-db-index=\"3\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u7531\u54ea\u4e2afunction\u53d1\u51fa\u7684log\" data-order=\"\u7531\u54ea\u4e2afunction\u53d1\u51fa\u7684log\" >\u7531\u54ea\u4e2afunction\u53d1\u51fa\u7684log <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A4\" data-x=\"0\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"levelname\" data-order=\"levelname\" >levelname <\/td><td data-cell-id=\"B4\" data-x=\"1\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(levelname)s\" data-order=\"%(levelname)s\" >%(levelname)s <\/td><td data-cell-id=\"C4\" data-x=\"2\" data-y=\"4\" data-db-index=\"4\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u65e5\u5fd7\u7684\u6700\u7ec8\u7b49\u7ea7\uff08\u88abfilter\u4fee\u6539\u540e\u7684\uff09\" data-order=\"\u65e5\u5fd7\u7684\u6700\u7ec8\u7b49\u7ea7\uff08\u88abfilter\u4fee\u6539\u540e\u7684\uff09\" >\u65e5\u5fd7\u7684\u6700\u7ec8\u7b49\u7ea7\uff08\u88abfilter\u4fee\u6539\u540e\u7684\uff09 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A5\" data-x=\"0\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"message\" data-order=\"message\" >message <\/td><td data-cell-id=\"B5\" data-x=\"1\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(message)s\" data-order=\"%(message)s\" >%(message)s <\/td><td data-cell-id=\"C5\" data-x=\"2\" data-y=\"5\" data-db-index=\"5\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u65e5\u5fd7\u4fe1\u606f\" data-order=\"\u65e5\u5fd7\u4fe1\u606f\" >\u65e5\u5fd7\u4fe1\u606f <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A6\" data-x=\"0\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"lineno\" data-order=\"lineno\" >lineno <\/td><td data-cell-id=\"B6\" data-x=\"1\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(lineno)d\" data-order=\"%(lineno)d\" >%(lineno)d <\/td><td data-cell-id=\"C6\" data-x=\"2\" data-y=\"6\" data-db-index=\"6\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5f53\u524d\u65e5\u5fd7\u7684\u884c\u53f7\" data-order=\"\u5f53\u524d\u65e5\u5fd7\u7684\u884c\u53f7\" >\u5f53\u524d\u65e5\u5fd7\u7684\u884c\u53f7 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A7\" data-x=\"0\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"pathname\" data-order=\"pathname\" >pathname <\/td><td data-cell-id=\"B7\" data-x=\"1\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(pathname)s\" data-order=\"%(pathname)s\" >%(pathname)s <\/td><td data-cell-id=\"C7\" data-x=\"2\" data-y=\"7\" data-db-index=\"7\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5b8c\u6574\u8def\u5f84\" data-order=\"\u5b8c\u6574\u8def\u5f84\" >\u5b8c\u6574\u8def\u5f84 <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A8\" data-x=\"0\" data-y=\"8\" data-db-index=\"8\" class=\"\" data-cell-type=\"text\" data-original-value=\"process\" data-order=\"process\" >process <\/td><td data-cell-id=\"B8\" data-x=\"1\" data-y=\"8\" data-db-index=\"8\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(process)s\" data-order=\"%(process)s\" >%(process)s <\/td><td data-cell-id=\"C8\" data-x=\"2\" data-y=\"8\" data-db-index=\"8\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5f53\u524d\u8fdb\u7a0b\" data-order=\"\u5f53\u524d\u8fdb\u7a0b\" >\u5f53\u524d\u8fdb\u7a0b <\/td><\/tr><tr style=\"height:px\" ><td data-cell-id=\"A9\" data-x=\"0\" data-y=\"9\" data-db-index=\"9\" class=\"\" data-cell-type=\"text\" data-original-value=\"thread\" data-order=\"thread\" >thread <\/td><td data-cell-id=\"B9\" data-x=\"1\" data-y=\"9\" data-db-index=\"9\" class=\"\" data-cell-type=\"text\" data-original-value=\"%(thread)s\" data-order=\"%(thread)s\" >%(thread)s <\/td><td data-cell-id=\"C9\" data-x=\"2\" data-y=\"9\" data-db-index=\"9\" class=\"\" data-cell-type=\"text\" data-original-value=\"\u5f53\u524d\u7ebf\u7a0b\" data-order=\"\u5f53\u524d\u7ebf\u7a0b\" >\u5f53\u524d\u7ebf\u7a0b <\/td><\/tr><\/tbody><\/table><!-- \/#supsystic-table-12.supsystic-table --><\/div><!-- \/.supsystic-tables-wrap --><!-- Tables Generator by Supsystic --><!-- Version:1.11.1 --><!-- http:\/\/supsystic.com\/ --><a title=\"Table Plugin\" style=\"display:none;\" href=\"https:\/\/supsystic.com\/plugins\/wordpress-data-table-plugin\/?utm_medium=love_link\" target=\"_blank\">Table Plugin<\/a>\n<h3>\u4e0a\u4ee3\u7801<\/h3>\n<\/div>\n<h4>1.\u7b80\u5355\u7684\u63a7\u5236\u53f0\u8f93\u51fa<\/h4>\n<p>\u4e00\u4e2a\u6700\u7b80\u5355\uff0c\u6700\u57fa\u672c\u7684\u63a7\u5236\u53f0\u8f93\u51fa<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\" python=\"\">import logging\r\n\r\n#\u8bbe\u7f6e\u8f93\u51fa\u683c\u5f0f\r\nlogging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')\r\n\r\nlogger = logging.getLogger(__name__)\r\n\r\nlogger.info(\"Start print log\")\r\nlogger.debug(\"Do something\")\r\nlogger.warning(\"Something maybe fail.\")\r\nlogger.info(\"Finish\")<\/code><\/pre>\n<pre>output:\r\n2021-03-08 14:36:31,929 - __main__ - INFO - Start print log\r\n2021-03-08 14:36:31,929 - __main__ - WARNING - Something maybe fail.\r\n2021-03-08 14:36:31,929 - __main__ - INFO - Finish<\/pre>\n<p>2.\u6587\u4ef6\u8f93\u51fa<\/p>\n<p>\u8fd9\u662f\u6700\u5e38\u7528\u7684\u6a21\u5f0f\uff0c\u6bd5\u7adf\u5728\u771f\u5b9e\u7684\u4ee3\u7801\u60c5\u51b5\u4e0b\uff0c\u540e\u7aef\u7a0b\u5e8f\u4e0d\u53ef\u80fd\u4eba\u4e3a\u7684\u65f6\u65f6\u523b\u523b\u76ef\u7740\uff0c\u4e8e\u662f\u5c31\u8981\u8f93\u51fa\u5230\u65e5\u5fd7\u6587\u4ef6\u4e2d\u3002<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\" python=\"\">import logging\r\nlogger = logging.getLogger(__name__)\r\nlogger.setLevel(level = logging.INFO)\r\nhandler = logging.FileHandler(\"log.txt\")\r\nhandler.setLevel(logging.INFO)\r\nformatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')\r\nhandler.setFormatter(formatter)\r\nlogger.addHandler(handler)\r\n \r\nlogger.info(\"Start print log\")\r\nlogger.debug(\"Do something\")\r\nlogger.warning(\"Something maybe fail.\")\r\nlogger.info(\"Finish\")<\/code><\/pre>\n<p>\u5728\u540c\u8def\u5f84\u4e0b\u7684log.txt\u6587\u4ef6\u4e2d\u5b58\u5728<\/p>\n<pre>2021-03-08 15:00:45,289 - __main__ - INFO - Start print log\r\n2021-03-08 15:00:45,290 - __main__ - WARNING - Something maybe fail.\r\n2021-03-08 15:00:45,290 - __main__ - INFO - Finish<\/pre>\n<h4>3.\u7ed3\u5408traceback\u8fdb\u884c\u8fdb\u884c\u6587\u4ef6\u62a5\u9519\u8f93\u51fa<\/h4>\n<pre><span>import <\/span>logging\r\n\r\nlogger = logging.getLogger(__name__)\r\nlogger.setLevel(<span>level<\/span>=logging.INFO)\r\nhandler = logging.FileHandler(<span>\"log.txt\"<\/span>)\r\nhandler.setLevel(logging.INFO)\r\nformatter = logging.Formatter(<span>'%(asctime)s - %(name)s - %(levelname)s - %(message)s'<\/span>)\r\nhandler.setFormatter(formatter)\r\n\r\nconsole = logging.StreamHandler()\r\nconsole.setLevel(logging.INFO)\r\n\r\nlogger.addHandler(handler)\r\nlogger.addHandler(console)\r\n\r\nlogger.info(<span>\"Start print log\"<\/span>)\r\nlogger.debug(<span>\"Do something\"<\/span>)\r\nlogger.warning(<span>\"Something maybe fail.\"<\/span>)\r\n<span>try<\/span>:\r\n    <span>open<\/span>(<span>\"sklearn.txt\"<\/span>, <span>\"rb\"<\/span>)\r\n<span>except <\/span>(<span>SystemExit<\/span>, <span>KeyboardInterrupt<\/span>):\r\n    <span>raise\r\n<\/span><span>except <\/span><span>Exception<\/span>:\r\n    logger.error(<span>\"Faild to open sklearn.txt from logger.error\"<\/span>, <span>exc_info<\/span>=<span>True<\/span>)\r\n<span>finally<\/span>:\r\n    logger.info(<span>\"Whatever it will happen.\"<\/span>)\r\n\r\nlogger.info(<span>\"Finish\"<\/span>)<\/pre>\n<h4>\u5728log.txt\u6587\u4ef6\u4e0e\u63a7\u5236\u53f0\u4e2d\u5747\u4e2d\u4f1a\u751f\u6210\u5982\u4e0b\u5185\u5bb9\uff1a<\/h4>\n<pre>2021-03-08 15:03:16,088 - __main__ - INFO - Start print log\r\n2021-03-08 15:03:16,088 - __main__ - WARNING - Something maybe fail.\r\n2021-03-08 15:03:16,089 - __main__ - ERROR - Faild to open sklearn.txt from logger.error\r\nTraceback (most recent call last):\r\n  File \"\/Users\/mt-007\/Desktop\/PythonCode\/pythonProject\/test_logging.py\", line 20, in &lt;module&gt;\r\n    open(\"sklearn.txt\", \"rb\")\r\nFileNotFoundError: [Errno 2] No such file or directory: 'sklearn.txt'\r\n2021-03-08 15:03:16,089 - __main__ - INFO - Whatever it will happen.\r\n2021-03-08 15:03:16,089 - __main__ - INFO - Finish<\/pre>\n<h3>\u5c01\u88c5<\/h3>\n<p>\u5b9e\u9645\u5f00\u53d1\u60c5\u51b5\u4e2d\uff0c\u6211\u4eec\u4f1a\u5c06logging\u5355\u72ec\u5199\u6210\u4e00\u4e2a\u6a21\u5757\u5c01\u88c5\u6210\u7c7b\uff0c\u7136\u540e\u5728\u5176\u4ed6\u7684\u529f\u80fd\u6a21\u5757\u6bd4\u5982\u901a\u8baf\u534f\u8bae\u6a21\u5757\uff0c\u6570\u636e\u5e93\u6a21\u5757\uff0c\u4e1a\u52a1\u5c42\uff0cAPI\u8c03\u7528\u6a21\u5757\u7b49\u7b49\uff0c\u4e2d\u8fdb\u884c\u8c03\u7528\uff0c\u518d\u914d\u5408try-catch\u8fdb\u884c\u9519\u8bef\u5206\u6790\u3002<\/p>\n<p>\u5728\u5b9e\u9645\u60c5\u51b5\u4e2d\uff0c\u5728\u524d\u6587\u63d0\u5230\u7684logging.getLogger(&#8220;&#8221;)\u4f20\u5165\u65e0\u540d\u79f0\u9002\u7528\u4e8e\u53ea\u9700\u8981\u5c0f\u8303\u56f4\u7cfb\u7edf\u4f7f\u7528\uff0c\u4e00\u65e6\u6d89\u53ca\u5230\u591a\u4e2a\u6a21\u5757\uff0c\u9700\u8981\u7cfb\u7edf\u5212\u5206\u7684\u60c5\u51b5\uff0c\u5efa\u8bae\u628aclass\u8bbe\u7f6e\u4e00\u4e2a\u4f20\u5165\u53c2\u6570\uff0c\u5e76\u4e14\u5c06\u8fd9\u4e2a\u53c2\u6570\u4f20\u9012\u7ed9logging.getLogger(&#8220;&#8221;)\uff0c\u4ee5\u89c4\u8303\u65e5\u5fd7\u7684\u5212\u5206\u3002<\/p>\n<p>\u53ef\u4ee5\u53c2\u8003\u5982\u4e0b\u7684\u6a21\u5757\uff08\u8fd9\u4e2a\u6a21\u5757\u4e5f\u662f\u53c2\u8003\u7f51\u4e0a\u522b\u4eba\u53d1\u7684\u64ad\u5ba2\uff0c\u8fd9\u7c7b\u6709\u5f88\u591a\uff0c\u57fa\u672c\u601d\u8def\u6982\u5ff5\u90fd\u662f\u76f8\u540c\u7684\uff09<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\" python=\"\">import logging\r\nimport logging.handlers\r\nimport os\r\nimport time\r\n\r\n\r\nclass logs(object):\r\n    def __init__(self):\r\n        # \u83b7\u53d6\u6a21\u5757\u540d\u79f0\uff0c\u6d4b\u8bd5\u7684\u65f6\u5019\u76f4\u63a5\u63a7\u6a21\u5757\u5373\u53ef\uff0c\u4f46\u662f\u5728\u5b9e\u9645\u4f7f\u7528\u7684\u60c5\u51b5\u4e0b\u9700\u8981\u9488\u5bf9\u4e0d\u540c\u9700\u8981\u8fdb\u884c\u65e5\u5fd7\u64b0\u5199\u7684\u6a21\u5757\u8fdb\u884c\u547d\u540d\r\n        # \u5217\u5982\uff1a\u901a\u8baf\u534f\u8bae\u6a21\u5757\uff0c\u6d4b\u8bd5\u6a21\u5757\uff0c\u6570\u636e\u5e93\u6a21\u5757\uff0c\u4e1a\u52a1\u5c42\u6a21\u5757\uff0cAPI\u8c03\u7528\u6a21\u5757\r\n        # \u53ef\u4ee5\u8003\u8651 __init__(self,model_name) \u8fd9\u6837\u4f20\u5165\uff0c\u7136\u540e\u518d\u7528\u4e00\u4e2alist\u89c4\u5b9a\u4e00\u4e0b\u6a21\u5757\u540d\u79f0\r\n        self.logger = logging.getLogger(\"\")\r\n        # \u8bbe\u7f6e\u8f93\u51fa\u7684\u7b49\u7ea7\r\n        LEVELS = {'NOSET': logging.NOTSET,\r\n                  'DEBUG': logging.DEBUG,\r\n                  'INFO': logging.INFO,\r\n                  'WARNING': logging.WARNING,\r\n                  'ERROR': logging.ERROR,\r\n                  'CRITICAL': logging.CRITICAL}\r\n        # \u521b\u5efa\u6587\u4ef6\u76ee\u5f55\r\n        logs_dir = \"logs\"\r\n        if os.path.exists(logs_dir) and os.path.isdir(logs_dir):\r\n            pass\r\n        else:\r\n            os.mkdir(logs_dir)\r\n        # \u4fee\u6539log\u4fdd\u5b58\u4f4d\u7f6e\r\n        timestamp = time.strftime(\"%Y-%m-%d\", time.localtime())\r\n        logfilename = '%s.txt' % timestamp\r\n        logfilepath = os.path.join(logs_dir, logfilename)\r\n        rotatingFileHandler = logging.handlers.RotatingFileHandler(filename=logfilepath,\r\n                                                                   maxBytes=1024 * 1024 * 50,\r\n                                                                   backupCount=5)\r\n        # \u8bbe\u7f6e\u8f93\u51fa\u683c\u5f0f\r\n        formatter = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')\r\n        rotatingFileHandler.setFormatter(formatter)\r\n        # \u63a7\u5236\u53f0\u53e5\u67c4\r\n        console = logging.StreamHandler()\r\n        console.setLevel(logging.NOTSET)\r\n        console.setFormatter(formatter)\r\n        # \u6dfb\u52a0\u5185\u5bb9\u5230\u65e5\u5fd7\u53e5\u67c4\u4e2d\r\n        self.logger.addHandler(rotatingFileHandler)\r\n        self.logger.addHandler(console)\r\n        self.logger.setLevel(logging.NOTSET)\r\n\r\n    def info(self, message):\r\n        self.logger.info(message)\r\n\r\n    def debug(self, message):\r\n        self.logger.debug(message)\r\n\r\n    def warning(self, message):\r\n        self.logger.warning(message)\r\n\r\n    def error(self, message):\r\n        self.logger.error(message)<\/code><\/pre>\n<p>\u5176\u4ed6\u6a21\u5757\u53ef\u4ee5\u76f4\u63a5\u8c03\u7528\u8f93\u51fa\uff0c\u5728\u5b9e\u9645\u60c5\u51b5\u4e2d\u6700\u597d\u7ed3\u5408try-catch\u8fd4\u56de\u7684excepte\u7684\u503c\u5c06\u5176\u8f93\u51fa\u51fa\u6765\uff0c\u800c\u5728\u5b9e\u9645\u4f7f\u7528\u4e2d\uff0c\u53ef\u4ee5try-catch\u4e2d\u7684<span>except\u9700\u8981\u53d1\u751f\u4e86\u9519\u8bef\u9700\u8981\u8fdb\u884clogger.error()\u8f93\u51fa\uff0c\u4e5f\u4e0d\u8981\u541d\u556c\u4ee3\u7801\u91cf\uff0c\u5728\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u63d0\u793a\u4fe1\u606f\u7684\u5730\u65b9logger.info()\uff0c\u6b64\u5916\u6709\u4e00\u4e9b\u64cd\u4f5c\u53ef\u80fd\u5f15\u53d1\u9519\u8bef\u4e5f\u53ef\u4ee5logger.warning()\uff0c\u603b\u4e4b\u4e0d\u8981\u541d\u556c\uff0c\u4e5f\u4e0d\u8981\u753b\u86c7\u6dfb\u8db3\u3002<\/span><\/p>\n<p>\u6700\u540e\u662f\u5176\u4ed6\u6a21\u5757\u5982\u4f55\u8c03\u7528\u6b64\u6a21\u5757\u7684\u4ee3\u7801\uff0c\u5c01\u88c5\u597d\u7684logging\u6a21\u5757\u6211\u547d\u540d\u4e3aloguil2\uff0c\u6ce8\u610f\u8c03\u7528\u5b83\u7684\u540c\u65f6\u4e5f\u9700\u8981\u5f15\u5165logging\uff0c\u91cd\u590d\u5f15\u7528\u6ce8\u610f\u7559\u610f\u6253\u5305\u95ee\u9898\u3002<\/p>\n<pre class=\"pure-highlightjs\"><code class=\"\" python=\"\">import logging\r\n\r\nlogger = logging.getLogger(__name__)\r\nimport logutil2\r\n\r\nif __name__ == '__main__':\r\n    logger = logutil2.logs()\r\n\r\n    a = [1,2,3]\r\n    logger.info(\"list a only have 1,2,3\")\r\n    logger.warning(\"\u64cd\u4f5c\u4e0d\u5f53\u53ef\u80fd\u5bfc\u81f4\u9519\u8bef\u53d1\u751f\")\r\n    try:\r\n        print(a[3])\r\n        logger.debug(\"this is debug\")\r\n    except Exception as e:\r\n        logger.error(e)\r\n    finally:\r\n        logger.info(\"\u65e0\u8bba\u5982\u4f55\u9700\u8981\u6267\u884c\u6b64\")<\/code><\/pre>\n<p>\u5728logs\/\u7684\u81ea\u52a8\u751f\u6210\u7684\u65e5\u671f\u6587\u4ef6\u4e2d\u4f1a\u4ea7\u751f\u5982\u4e0b\u8f93\u51fa\uff1a<\/p>\n<pre>[2021-03-08 15:14:29] [INFO] list a only have 1,2,3\r\n[2021-03-08 15:14:29] [WARNING] \u64cd\u4f5c\u4e0d\u5f53\u53ef\u80fd\u5bfc\u81f4\u9519\u8bef\u53d1\u751f\r\n[2021-03-08 15:14:29] [ERROR] list index out of range\r\n[2021-03-08 15:14:29] [INFO] \u65e0\u8bba\u5982\u4f55\u9700\u8981\u6267\u884c\u6b64<\/pre>\n<p>\u53c2\u8003\u8bb8\u591a\u64ad\u5ba2\u6c47\u603b\u5199\u51fa\u6765\u7684<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python\u7684logging\u6a21\u5757\uff1a\u65e5\u5fd7\u5904\u7406<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[31],"class_list":["post-937","post","type-post","status-publish","format-standard","hentry","category-helloworld","tag-python"],"views":3854,"_links":{"self":[{"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/posts\/937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/comments?post=937"}],"version-history":[{"count":9,"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/posts\/937\/revisions"}],"predecessor-version":[{"id":946,"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/posts\/937\/revisions\/946"}],"wp:attachment":[{"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/media?parent=937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/categories?post=937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mustenaka.cn\/index.php\/wp-json\/wp\/v2\/tags?post=937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}