Python 使用什么日志系统?需要自己编写吗
大家代码是如何做日志记录的呢
Python 使用什么日志系统?需要自己编写吗
python logging 模块了解一下, 完全满足所有打印 log 的各种需求, 当然了,需要自己根据需求配置一下
Python自带了一个非常强大的日志系统 logging 模块,你通常不需要自己从头编写。
logging 模块提供了完整的日志记录功能,包括不同级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)、多种输出目标(控制台、文件、网络等)、灵活的格式配置和日志轮转等。对于绝大多数应用来说,直接使用它就足够了。
这里是一个基本的使用示例:
import logging
# 基础配置(通常放在程序入口处)
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler("app.log"),
logging.StreamHandler()
]
)
# 在代码中使用
logger = logging.getLogger(__name__)
def main():
logger.debug("这是一条调试信息") # 不会显示,因为级别是INFO
logger.info("程序开始运行")
try:
result = 10 / 2
logger.info(f"计算完成,结果: {result}")
except Exception as e:
logger.error(f"计算出错: {e}", exc_info=True)
logger.warning("程序运行结束")
if __name__ == "__main__":
main()
对于更复杂的项目,你可以通过配置文件(如JSON、YAML)或代码来配置不同的logger和handler。只有在有非常特殊的、logging模块无法满足的需求时(比如要写入特定的数据库或消息队列),才需要考虑扩展它或使用第三方库(如structlog)。
直接用logging就行,够用了。
程序运行,执行 init_log(“xxx.log”) 即可,所有日志和 print 都会输出到指定文件python<br><br>def init_log(filename):<br> logger = logging.getLogger()<br> logger.setLevel(logging.DEBUG)<br> formatter = logging.Formatter(<br> '%(asctime)s-%(name)s-%(message)s',<br> datefmt='%Y-%m-%d %H:%M:%S')<br><br> # 使用 FileHandler 输出到文件<br> fh = logging.FileHandler(filename)<br> fh.setLevel(logging.DEBUG)<br> fh.setFormatter(formatter)<br><br> # 使用 StreamHandler 输出到屏幕<br> ch = logging.StreamHandler()<br> ch.setLevel(logging.DEBUG)<br> ch.setFormatter(formatter)<br><br> logger.addHandler(ch)<br> logger.addHandler(fh)<br><br><br>
哦,v2 评论不支持 markdown?
我这边爬虫的日志目前是用的 logging+jsonlogger 输出成每行一个 json 格式的日志,然后用 filebeat 传到 es,用 kibana 监控,可以参考一下
https://i.loli.net/2019/06/12/5d007543b990f61298.png
可以用 gist 间接支持
#6
logstash 不会占资源太多吗
一般来说
标准输出
由日志收集程序收集处理,可能还需要分析
请使用 openstack oslo log


