首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何自定义Python日志的时间格式?

如何自定义Python日志的时间格式?
EN

Stack Overflow用户
提问于 2010-07-11 01:56:39
回答 4查看 170.6K关注 0票数 256

我刚接触Python的日志记录包,并计划在我的项目中使用它。我想根据自己的喜好定制时间格式。以下是我从教程中复制的一小段代码:

代码语言:javascript
复制
import logging

# create logger
logger = logging.getLogger("logging_tryout2")
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s")

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

# "application" code
logger.debug("debug message")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
logger.critical("critical message")

下面是输出:

代码语言:javascript
复制
2010-07-10 10:46:28,811;DEBUG;debug message
2010-07-10 10:46:28,812;INFO;info message
2010-07-10 10:46:28,812;WARNING;warn message
2010-07-10 10:46:28,812;ERROR;error message
2010-07-10 10:46:28,813;CRITICAL;critical message

我想将时间格式缩短为:“2010-07-10 10:46:28”,去掉毫秒后缀。我看了看Formatter.formatTime,但是很困惑。我很感谢你帮助我实现我的目标。谢谢。

EN

回答 4

Stack Overflow用户

发布于 2014-05-27 00:26:52

使用logging.basicConfig,下面的示例适用于我:

代码语言:javascript
复制
logging.basicConfig(
    filename='HISTORYlistener.log',
    level=logging.DEBUG,
    format='%(asctime)s.%(msecs)03d %(levelname)s %(module)s - %(funcName)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S',
)

这允许您在一行中格式化和配置所有内容。生成的日志记录如下所示:

代码语言:javascript
复制
2014-05-26 12:22:52.376 CRITICAL historylistener - main: History log failed to start
票数 214
EN

Stack Overflow用户

发布于 2017-05-30 09:40:42

为了补充其他答案,这里是Python文档中的variable list

代码语言:javascript
复制
Directive   Meaning Notes

%a  Locale’s abbreviated weekday name.   
%A  Locale’s full weekday name.  
%b  Locale’s abbreviated month name.     
%B  Locale’s full month name.    
%c  Locale’s appropriate date and time representation.   
%d  Day of the month as a decimal number [01,31].    
%H  Hour (24-hour clock) as a decimal number [00,23].    
%I  Hour (12-hour clock) as a decimal number [01,12].    
%j  Day of the year as a decimal number [001,366].   
%m  Month as a decimal number [01,12].   
%M  Minute as a decimal number [00,59].  
%p  Locale’s equivalent of either AM or PM. (1)
%S  Second as a decimal number [00,61]. (2)
%U  Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0.    (3)
%w  Weekday as a decimal number [0(Sunday),6].   
%W  Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0.    (3)
%x  Locale’s appropriate date representation.    
%X  Locale’s appropriate time representation.    
%y  Year without century as a decimal number [00,99].    
%Y  Year with century as a decimal number.   
%z  Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59].  
%Z  Time zone name (no characters if no time zone exists).   
%%  A literal '%' character.     
票数 45
EN

Stack Overflow用户

发布于 2011-05-25 23:34:57

如果将logging.config.fileConfig与配置文件一起使用,请使用类似以下内容:

代码语言:javascript
复制
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3220284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档