python实现根据当前时间创建目录并输出日志
举个例子:比如我们要实现根据当前时间的年月日来新建目录来存放每天的日志,当前时间作为日志文件名称;代码如下:
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
import logging
import os.path
import time project_path = 'Exercise' #定义项目目录 class Logger(object):
def __init__(self):
'''''
指定保存日志的文件路径,日志级别,以及调用文件
将日志存入到指定的文件中
'''
current_time=time.strftime('%Y%m%d%H%M',
time.localtime(time.time())) # 返回当前时间
current_path=os.path.dirname(os.path.abspath(project_path)) # 返回当前目录
path1=current_path.split(project_path) #指定分隔符对字符串进行切片
path2=[path1[0], project_path]
path3=''
new_name=path3.join(path2) + '/logs/' #在该路径下新建下级目录 dir_time = time.strftime('%Y%m%d', time.localtime(time.time())) #返回当前时间的年月日作为目录名称
isExists=os.path.exists(new_name + dir_time) #判断该目录是否存在
if not isExists:
os.makedirs(new_name + dir_time)
print(new_name + dir_time + "目录创建成功") else:
# 如果目录存在则不创建,并提示目录已存在
print(new_name + "目录 %s 已存在" % dir_time) try:
# 创建一个logger(初始化logger)
self.log = logging.getLogger()
self.log.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 # 如果case组织结构式 /testsuit/featuremodel/xxx.py , 那么得到的相对路径的父路径就是项目根目录
log_name = new_name + dir_time + '/' + current_time + '.log' #定义日志文件的路径以及名称 fh = logging.FileHandler(log_name)
fh.setLevel(logging.INFO) # 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO) # 定义handler的输出格式
formatter = logging.Formatter('[%(asctime)s] - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter) # 给logger添加handler
self.log.addHandler(fh)
self.log.addHandler(ch)
except Exception as e:
print("输出日志失败! %s" % e) # 日志接口,用户只需调用这里的接口即可,这里只定位了INFO, WARNING, ERROR三个级别的日志,可根据需要定义更多接口 def info(cls,msg):
cls.log.info(msg)
return def warning(cls,msg):
cls.log.warning(msg)
return def error(cls, msg):
cls.log.error(msg)
return if __name__ == '__main__': logger = Logger()
logger.info('This is info')
logger.warning('This is warning')
logger.error('This is error')
python实现根据当前时间创建目录并输出日志的更多相关文章
- 转【Python】同时向控制台和文件输出日志logging
#-*- coding:utf-8 -*-import logging # 配置日志信息logging.basicConfig(level=logging.DEBUG, format='%(ascti ...
- Python中日期和时间格式化输出的方法
本文转自:https://www.jb51.net/article/62518.htm 本文实例总结了python中日期和时间格式化输出的方法.分享给大家供大家参考.具体分析如下: python格式化 ...
- python操作日期和时间的方法
不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 ...
- 【转】Python之日期与时间处理模块(date和datetime)
[转]Python之日期与时间处理模块(date和datetime) 本节内容 前言 相关术语的解释 时间的表现形式 time模块 datetime模块 时间格式码 总结 前言 在开发工作中,我们经常 ...
- python入门6 字符串拼接、格式化输出
字符串拼接方式 1 使用 + 拼接字符串 2 格式化输出:%s字符串 %d整数 %f浮点数 %%输出% %X-16进制 %r-原始字符串 3 str.format() 代码如下: #codin ...
- python中常用的时间操作
python中常用的时间模块有time和datetime,以下是这两个模块中常用的方法: #先引入模块 import timefrom datetime import datetiem, timezo ...
- 【转】kettle 的内存设置及输出日志的时间类型
本文转载自:http://blog.csdn.net/dqswuyundong/archive/2010/10/19/5952004.aspx 设置kettle的内存 REM ************ ...
- Python标准库02 时间与日期 (time, datetime包)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有良好的时间和日期管理功能.实际上,计算机只会维护一个挂钟时间(wa ...
- Python同时向控制台和文件输出日志logging的方法 Python logging模块详解
Python同时向控制台和文件输出日志logging的方法http://www.jb51.net/article/66756.htm 1 #-*- coding:utf-8 -*- 2 import ...
随机推荐
- [Localization] MobileNet with SSD
先来一波各版本性能展览: Pre-trained Models Choose the right MobileNet model to fit your latency and size budget ...
- 19迭代模式Iterator
一.什么是迭代模式 Iterator模式也叫迭代模式,是行为模式之 一,它把对容器中包含的内部对象的访问委让给 外部类,使用Iterator(遍历)按顺序进行遍历 访问的设计模式. 二.不使用迭代模式 ...
- 使用Eclipse的坑
1.运行Eclipse时突然出现找不到或者无法加载主类,这个问题不解决,下面的学习就无从做起,查了网上的一些资料,无法解决,所以还是有点烦人.如果在解决问题的过程中能够学到点什么,也是很值得的,但是就 ...
- How to view assertions in the Verdi waveform viewer
In the Cadence Simvision waveform viewer, I can see every assertions listed as a hierarchical signal ...
- Invalid file name: must contain only [a-z0-9_.]【Android报错】
Invalid file name: must contain only [a-z0-9_.][Android报错] 如: `[2012-02-07 09:58:14 - EmergencyRespo ...
- nodejs--get请求数据解析
---- 三种方式解析: 1.自动动手切 2.api的querystring模块 3.api的url模块
- Codeforces 670E - Correct Bracket Sequence Editor - [对顶栈]
题目链接:https://codeforces.com/contest/670/problem/E 题意: 给出一个已经匹配的括号串,给出起始的光标位置(光标总是指向某个括号). 有如下操作: 1.往 ...
- Catch That Cow POJ - 3278 bfs map超时,短路判断顺序。
题意:可以把n边为n+1,n-1,n*2问从n到k的最少变化次数. 坑:标题写了.有点不会写bfs了... ac代码 #define _CRT_SECURE_NO_WARNINGS #include& ...
- 是时候给Xcode瘦身了
我的Xcode 用的很久了,是从6.0之后一直慢慢升级来的. 最近CleanMyMac 一直提示磁盘空间不足... 扫描一下: 用户数据中竟然有接近17G的数据. 打开Finder使用快捷键comma ...
- Sleep 等待连接攻击
Sleep The thread is waiting for the client to send a new statement to it. https://dev.mysql.com/doc/ ...