python logging 日志输出 学习笔记 时间格式化

2023-05-16

一、logging介绍

        Logging是python自带的模块,这个模块支持输出不同级别的日志,可以输出到控制台和写入文件,支持TCP、HTTP、GET/POST、SMTP、Socket等协议,将日志信息发送到网络等等。


        Logging提供5个等级的输出,CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出


        logging库提供了多个组件:Logger、Handler、Filter、Formatter:

                Logger      对象提供应用程序可直接使用的接口,供应用代码使用;
                Handler     发送日志到适当的目的地;
                Filter          提供了过滤日志信息的方法,控制输出; 
                Formatter  指定日志输出和显示的具体格式。


二、Logging输出日志到控制台,同时写入文件

#coding:utf-8

# =======================================================================
# FuncName: console_out.py
# Desc: output log to console and file
# Date: 2016-02-19 17:32
# Author: johnny
# =======================================================================

import logging

def console_out(logFilename):
    ''' Output log to file and console '''
    # Define a Handler and set a format which output to file
    logging.basicConfig(
                    level    = logging.DEBUG,              # 定义输出到文件的log级别,                                                            
                    format   = '%(asctime)s  %(filename)s : %(levelname)s  %(message)s',    # 定义输出log的格式
                    datefmt  = '%Y-%m-%d %A %H:%M:%S',                                     # 时间
                    filename = logFilename,                # log文件名
                    filemode = 'w')                        # 写入模式“w”或“a”
    # Define a Handler and set a format which output to console
    console = logging.StreamHandler()                  # 定义console handler
    console.setLevel(logging.INFO)                     # 定义该handler级别
    formatter = logging.Formatter('%(asctime)s  %(filename)s : %(levelname)s  %(message)s')  #定义该handler格式
    console.setFormatter(formatter)
    # Create an instance
    logging.getLogger().addHandler(console)           # 实例化添加handler

    # Print information              # 输出日志级别
    logging.debug('logger debug message')     
    logging.info('logger info message')
    logging.warning('logger warning message')
    logging.error('logger error message')
    logging.critical('logger critical message')

if __name__ == "__main__":
    console_out('logging.log')

控制台:
2016-03-06 14:38:49,714  console_out.py : INFO  logger info message
2016-03-06 14:38:49,714  console_out.py : WARNING  logger warning message
2016-03-06 14:38:49,714  console_out.py : ERROR  logger error message
2016-03-06 14:38:49,714  console_out.py : CRITICAL  logger critical message

文件: logging.log
2016-03-06 Sunday 14:38:49  console_out.py : DEBUG  logger debug message
2016-03-06 Sunday 14:38:49  console_out.py : INFO  logger info message
2016-03-06 Sunday 14:38:49  console_out.py : WARNING  logger warning message
2016-03-06 Sunday 14:38:49  console_out.py : ERROR  logger error message
2016-03-06 Sunday 14:38:49  console_out.py : CRITICAL  logger critical message
logging.basicConfig()函数中的具体参数
filename:   指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中;
filemode:   文件打开方式,在指定了filename时使用这个参数,默认值为“w”还可指定为“a”;
format:      指定handler使用的日志显示格式;
datefmt:    指定日期时间格式。, 格式参考strftime时间格式化(下文)
level:        设置rootlogger的日志级别
stream:     用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。
                  若同时列出了filename和stream两个参数,则stream参数会被忽略。

format参数中可能用到的格式化信息:

%(name)s

Logger的名字

%(levelno)s

数字形式的日志级别

%(levelname)s

文本形式的日志级别

%(pathname)s

调用日志输出函数的模块的完整路径名,可能没有

%(filename)s

调用日志输出函数的模块的文件名

%(module)s

调用日志输出函数的模块名

%(funcName)s

调用日志输出函数的函数名

%(lineno)d

调用日志输出函数的语句所在的代码行

%(created)f

当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d

输出日志信息时的,自Logger创建以 来的毫秒数

%(asctime)s

字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d

线程ID。可能没有

%(threadName)s

线程名。可能没有

%(process)d

进程ID。可能没有

%(message)s

用户输出的消息

python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身


计算毫秒

#!/usr/bin/env python
#coding:utf-8

import  datetime,time
print time.strftime('%Y-%m-%d  %H:%M:%S'),datetime.datetime.now().strftime('%f')[:3]
print datetime.datetime.now().strftime('%Y%m%d %H:%M:%S.%f')


  


三、子文件日志汇总到主文件

        多个py文件logging内容都输出到一个主文件的log文件中,并且格式都是设置好的,统一的只要主文件设置好logging.basicConfig相关参数,配置好StreamHandler等内容后,子文件,只需要导入logging模块,然后调用logging.info,logging.debug函数,即可实现将log信息,都输入到主文件的log中了。
想进一步了解请移步: python logging 替代print 输出内容到控制台和重定向到文件




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

python logging 日志输出 学习笔记 时间格式化 的相关文章

  • Linux查看实时网卡流量的几种方式

    工作中 xff0c 我们经常需要查看服务器的实时网卡流量 通常 xff0c 我们会通过这几种方式查看Linux服务器的实时网卡流量 1 sar n DEV 1 2 sar命令包含在sysstat工具包中 xff0c 提供系统的众多统计数据
  • NUMA详解

    目录 NUMA简介 NUMA开启与关闭 查看系统是否支持 关闭方法 numactl hardware介绍 没有安装numactl工具下查看NUMA架构节点数 xff1a 查看每个NUMA节点的CPU使用情况 xff1a 看每个NUMA节点的
  • OpenStack中的CPU与内存超分详解

    目录 什么是超分 CPU超分 查看虚拟机虚拟CPU运行在哪些物理CPU上 内存超分 内存预留 内存共享 如何设置内存预留和内存共享 全局设置 临时设置 什么是超分 超分通常指的是CPU或者GPU的分区或者分割 xff0c 以在一个物理CPU
  • docker 官方的镜像大多基于debian,但是官方源apt-get update更新失败,如何更换成中国源

    一开始创建容器的时候就应该更换成国内数据源 xff0c 可是我的镜像源在经历重启后 xff0c 回归到官方镜像源 xff0c 当想安装别的linux命令时 xff0c 异常缓慢 xff0c 安装不上 这种情况就是镜像源导致 镜像源可以在容器
  • MySQL学习笔记(11)——创建视图

    11 视图 11 1 创建视图 创建视图的语法 创建视图使用CREATE VIEW语句 xff0c 基本语法格式如下 xff1a span class token keyword create span span class token p
  • Java 实现天气预报

    效果图 1 登录高德地图API开放平台 天气查询 API文档 开发指南 Web服务 API 高德地图API 2 用户在高德地图官网申请web服务API类型KEY 3 天气查询 天气查询API服务地址 xff1a URL https rest
  • 数学建模学习(1)———— 逻辑回归的使用和案例(2022.7.18)

    许多数学建模的使用基本都是一元线性回归 xff0c 和多元线性回归开始 xff0c 但由于经常看关于这两个东西 xff0c 实在不想从这开始整理笔记 xff0c 等后面印象不深后在整理过 文章目录 目录 文章目录 一 逻辑回归介绍 二 逻辑
  • Windows下python和pip的环境配置 ---转载

    本文转载于 xff1a http www cnblogs com yuanzm p 4089856 html 非常感谢原文作者的博文 xff0c 帮助了我学习的不少困惑 这篇文章作为学习使用Python的第一篇文章 xff0c 如何安装Py
  • GreenHills的使用及常用技巧

    GreenHills作为世界知名第三方调试工具支持市面上几乎所有芯片 V850调试工具有多种选择 当时项目使用Greenhills作为编译调试工具让我见识到了专业工具的强大 本文以KPIT AutoSAR的PORT模块为例介绍GreenHi
  • LaTeX 中处理参考文献的三种方法总结

    LaTeX 中处理参考文献的三种方法总结 方法一 xff1a 用BibLaTeX处理 分成如下四步 xff1a 第一步 xff1a 制作生成bib文件 xff1b 第二步 xff1a 在导言区需要加入biblatex宏包 xff1a use
  • mysql8之SSL加密

    新发现 xff1a 安装Mysql8后 xff0c 查看datadir 文件多了不少 xff0c 发现都是SSL加密对应得文件 pem pwd ls l pem data mysqldata rw 1 mysql mysql 1676 3月
  • mysql常用算法积累

    1 mysql计算百分比 使用sum函数 xff0c 如下 xff1a SELECT COUNT AS 总数 SUM CASE WHEN 96 匹配情况 96 61 1 THEN 1 ELSE 0 END AS 总匹配数 SUM CASE
  • Shell知识点回顾

    shell基本的语法 xff1a 定义变量 xff1a key 61 value 注意 xff1a 等号两边不能有空格 xff0c 使用字母数字下划线命名 xff0c 但是不能以数字开发头 xff0c 系统变量建议全大写字母 撤销变量使用的
  • PVE一些记录

    目录 1 简介 2 qm Qemu KVM 虚拟机管理器 3 vmdk img raw转qcow2 4 PVE网卡直通 5 一些位置映射 6 外挂硬盘操作参考 7 查看 修改ip 1 简介 PVE是基于debian的系统 xff0c 使用a
  • ARM架构 Linux 安装 gitlab

    Docker 安装 GitLab 由于 GitLab 官网上下载提供的全是 x86 架构的 xff0c 因此需要安装 ARM 的就需要自己通过源码编译 xff0c 编译的过程也比较繁琐 xff0c 这里使用的则为 Docker 镜像安装 x
  • debian下创建新用户useradd

    1 使用sudo sudo useradd m abc g sudo s bin bash d home abc sudo passwd abc 2 直接在root用户下 xff1a groupadd abc useradd m abc g
  • 第11周 动态规划二

    11 1 买房问题 题目描述 xff1a 蒜头君从现在开始工作 xff0c 年薪 N 万 他希望在蒜厂附近买一套 60平米的房子 xff0c 现在价格是 200 万 假设房子价格以每年百分之 K 增长 xff0c 并且蒜头君未来年薪不变 x
  • IntelliJ IDEA必须使用最新jdk问题解决

    最近碰见一个问题 xff0c 公司的项目大部分是jdk1 7的 xff0c 然后下了最新的IntelliJ IDEA居然需要1 8才能启动 xff0c 这就尴尬了 难道要改java home xff1f 上网搜了下 xff0c 在一个评论区
  • Win7上从硬盘安装Debian

    最近一直想将笔记本搞成Win7 43 Debian双系统 xff0c 因为不管如何优化 xff0c 2G内存的Win7笔记本上开个Linux虚拟机都实在吃力 经过一段时间的资料搜索 xff0c 并阅读Debian官方的安装文档 xff0c
  • 深度探索C++对象模型

    深度探索C 43 43 对象模型 参考链接 第1章 关于对象 Object Lessons C 43 43 的额外成本三种对象模型简单对象模型表格驱动对象模型C 43 43 对象模型 class和struct关键字的差异三种编程典范一个类的

随机推荐

  • 用单片机控制直流电机

    一 设计方案比较与分析 xff1a 1 电机调速控制模块 xff1a 方案一 xff1a 采用电阻网络或数字电位器调整电动机的分压 xff0c 从而达到调速的目的 但是电阻网络只能实现有级调速 xff0c 而数字电阻的元器件价格比较昂贵 更
  • python-类

    面向对象 在编程语言中 xff0c 我们将变量看成数据 xff0c 它用来存储多种形式的值 xff1b 我们将函数看成操作 xff0c 它用来对数据进行某些处理 所有的代码都由数据和操作构成 xff0c 程序运行的本质就是对数据进行各种操作
  • 求模逆元算法的C/C++实现

    include lt stdio h gt Name Copyright Author 64 dujianjian Date 01 11 12 11 26 Description 递归 三元组gcd a b 61 61 ax 43 by 6
  • python显示当前时间

    1 先导入库 xff1a import datetime 2 获取当前日期和时间 xff1a now time 61 datetime datetime now 3 格式化成我们想要的日期 xff1a strftime xff08 xff0
  • pandas中Series的使用

    文章目录 pandas的应用创建Series对象索引花式索引布尔索引Series对象的常用属性describe 方法 xff1a value count 方法unique 方法数据处理的方法 isnull 和notnull dropna 和
  • 什么是数据挖掘

    文章目录 什么是数据挖掘1 分类问题2 聚类问题3 回归问题 数据挖掘相关的标准库 数据挖掘模型训练分类问题聚类问题回归问题关联问题 模型集成模型评估评估指标混淆矩阵与标准率指标泛化能力评估 什么是数据挖掘 数据挖掘就是寻找数据中隐含的知识
  • Json数据传递参数

    文章目录 Json数据传递参数集合参数 xff1a Json格式POJO参数 xff1a json格式集合参数 xff1a json格式 64 RequestBody与 64 RequestParam的区别时间参数的转换 Json数据传递参
  • MybatisPlus的知识点

    文章目录 MybatisPlus的知识点常用注解分页功能 条件查询方式按条件查询NULL值处理查询投影查询条件的设定字段映射与表名映射id生成策略 xff08 insert xff09 逻辑删除 xff08 Delete Update xf
  • cookie和session

    文章目录 会话跟踪技术Cookie基本使用 Session服务器重启后 xff0c Session中的数据是否还在 会话跟踪技术 会话 xff1a 用户打开浏览器 xff0c 访问web服务器的资源 xff0c 会话建立 xff0c 直到一
  • 【Django】修改端口号与地址

    在启动 Django 项目时 xff0c Django 默认监听的端口号为 8000 xff0c 设置的默认 IP 地址为 127 0 0 1 如果需要修改默认的端口号和 IP 地址 xff0c 可以通过命令行 配置文件 PyCharm 这
  • 【mdk报错】Error: L6218E: Undefined symbol XXXX (referred from main.o)

    一种情况就是没有在用户文件夹中添加文件 xff08 如LED c xff09 第二种错误 xff1a 错误描述为 xff1a OBJ Template axf Error L6218E Undefined symbol main refer
  • Codeforces 1462 C. Unique Number

    Codeforces 1462 C Unique Number 题目链接 xff1a https codeforces com problemset problem 1462 C You are given a positive numbe
  • nohup: failed to run command 'java': No such file or directory

    文章目录 问题现象 xff1a 解决办法 xff1a 问题现象 xff1a 在Ambari平台启动某个服务时 xff0c 会在ambari server节点执行类型nohup java jar XX jar这样的指令 如果把这个指令单独拿出
  • opencv学习笔记(二)-对xml和yaml文件的读写操作

    一 xml和yaml的简单介绍 所谓的xml 就是eXtensible Markup Language 翻译成中文就是 可扩展标识语言 首先XML是一种元标记语言 xff0c 所谓 元标记 就是开发者可以根据自己的需要定义自己的标记 xff
  • 图形化CentOS7.5安装Xrdp服务使通过Windows远程桌面连接

    文章目录 安装启动远程连接 安装 离线的操作系统iso中没有这个包 xff0c 这里使用阿里的yum原下载安装 span class token comment 备份本地源 span span class token function mv
  • centos7 安装FreeSWITCH1.10.7

    好长时间没有安装新的FreeSWITCH了 xff0c 只是知道1 10 4以后spandsp和sofia sip分离出来 xff0c 需要单独编译 xff0c 但上次的实际操作还是很久之前 xff0c 今天又安装了一次 xff0c 索性将
  • Golang实现字符串长度截取,支持正反向

    func main fmt Println SubStr 34 helloword 34 1 1 start xff1a 起始下标 xff0c 负数从尾部开始 xff0c 1为最后一个 length xff1a 截取长度 xff0c 负数表
  • 配置CDN加速域名

    cdn域名加速配置教程 xff0c 切记加速域名与源站域名不能是同一个 第一步 xff1a 打开服务器管理控制台 找到cdn管理 第二部 xff1a 配置源站信息 第三步 xff1a 点击下一步进行审批 第四步 xff1a 审批通过后进行配
  • Proxmox VE(PVE) 添加Web控制台显示CPU和主板温度

    PVE 默认是没有CPU和主板温度显示的 xff0c 为方便使用 xff0c 我们自己加上 实际效果 版本和软件 Virtual Environment 6 1 3putty 或 PVE自带的Shell 或 MobaXterm 等工具 安装
  • python logging 日志输出 学习笔记 时间格式化

    一 logging介绍 Logging是python自带的模块 xff0c 这个模块支持输出不同级别的日志 xff0c 可以输出到控制台和写入文件 xff0c 支持 TCP HTTP GET POST SMTP Socket等 协议 xff