LOG日志系统
# coding=utf-8
import datetime
import logging
import os
import sys
from logging.handlers import TimedRotatingFileHandler class Logger(object):
level_relations = {
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'critical': logging.CRITICAL
} def __init__(self, name=None, date=None, filename=None, level='info', fmt='%(asctime)s [module:%(name)s][line:%(lineno)d] - %(levelname)s: %(message)s'):
self.level = self.level_relations.get(level)
fmt = logging.Formatter(fmt)
path = './log'
if not os.path.exists(path):
os.makedirs(path)
filename = path + '/record'
self.logger = logging.getLogger(name)
self.logger.setLevel(self.level)
sh = logging.StreamHandler(sys.stdout)
sh.setFormatter(fmt)
sh.setLevel(self.level) # fh = logging.FileHandler(filename)
# fh.setFormatter(fmt)
# fh.setLevel(logging.INFO) fh = TimedRotatingFileHandler(filename, when="MIDNIGHT", backupCount=0)
fh.setFormatter(fmt)
fh.setLevel(logging.DEBUG) # self.logger.addHandler(sh)
self.logger.addHandler(fh)
使用方法:
logging = Logger('arbitrager', level='info', date=datetime.date.today()).logger
输出效果
2018-12-21 14:41:58,072 [module:arbitrager][line:106] - INFO: 余额:{'RMB': 0, 'BTC': 8.54261856644365, 'ETH': 0.0472080574819629, 'USDT': 47.34626115212543,}
2018-12-21 14:57:40,146 [module:arbitrager][line:106] - INFO: 余额:{'RMB': 0, 'BTC': 8.54261856644365, 'ETH': 0.0472080574819629, 'USDT': 47.34626115212543,}
2018-12-21 14:58:22,290 [module:arbitrager][line:106] - INFO: 余额:{'RMB': 0, 'BTC': 8.54261856644365, 'ETH': 0.0472080574819629, 'USDT': 47.34626115212543,}
2018-12-21 14:58:51,587 [module:arbitrager][line:106] - INFO: 余额:{'RMB': 0, 'BTC': 8.54261856644365, 'ETH': 0.0472080574819629, 'USDT': 47.34626115212543,}
2018-12-21 15:06:57,794 [module:arbitrager][line:106] - INFO: 余额:{'RMB': 0, 'BTC': 8.54261856644365, 'ETH': 0.0472080574819629, 'USDT': 47.34626115212543, }
LOG日志系统的更多相关文章
- C++ Log日志系统
闲得无聊,瞎写的一个东西. 好多地方能够优化甚至可能重写,也没写,就记下了个思路在这里. 主要熟练一下C++17的内容. version = 0.1 lc_log .h 1 #pragma once ...
- MySQL日志系统:redo log与binlog
日志系统主要有redo log(重做日志)和binlog(归档日志).redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志 ...
- Linux**系统实现log日志自动清理
Linux系统实现log日志自动清理 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...
- LOG收集系统(一):原日志至收集
Date: 20140207Auth: Jin 设置一个LOG收集系统1. 收集原生(不解析,不压缩)的业务日志和WEB日志(NGINX,PHP)2. 提供给开发,测试直接阅读和下载 需求分析原生日志 ...
- 成功配置TOMCAT的LOG4J日志系统,格式:HTML+每天以YYYY-MM-DD.LOG命名的日志文件
关于log4j.properties文件在web项目中放的位置,找过很多,最后实践结果是: 一.web项目 二.放在src的目录里面,然后项目生成后会自动在\WEB-INF\classes文件里有份l ...
- Linux系统的LOG日志文件及入侵后日志的清除
UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.当然也有第三方工具记录入侵系统的 痕迹,UNIX系统存放LOG文件,普通位置如下: /usr/adm - 早期版本的UNIX/var/adm - ...
- MySQL 日志系统之 redo log 和 binlog
之前我们了解了一条查询语句的执行流程,并介绍了执行过程中涉及的处理模块.一条查询语句的执行过程一般是经过连接器.分析器.优化器.执行器等功能模块,最后到达存储引擎. 那么,一条 SQL 更新语句的执行 ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- C++ 高性能无锁日志系统
服务器编程中,日志系统需要满足几个条件 .高效,日志系统不应占用太多资源 .简洁,为了一个简单的日志功能引入大量第三方代码未必值得 .线程安全,服务器中各个线程都能同时写出日志 .轮替,服务器不出故障 ...
- Atitit.log日志技术的最佳实践attilax总结
Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...
随机推荐
- [selenium]点击元素出现的obscure问题
前言 我们一般使用如下方式点击元素: elem = driver.find_element(...) elem.click() # 或者使用带等待条件的方式 elem = WebDriverWait( ...
- Pythonre.compile:用于优化正则表达式匹配的工具
import re # Python re.compile的性能优势 # 相对于使用re.match和re.search等函数直接进行匹配,使用Python re.compile的优化方式可以带来更好 ...
- 2023CISCN华中赛区re
2023CISCN华中赛区re 当时出的题 misc3-babyandroid 找so文件,加密过程也不复杂 每三个一组进行加密 这里就是先每个减去65 然后 大概是 y1=(31x1)%26+65 ...
- 为什么要使用API接口,他能带来哪些便利
API接口是程序员进行应用程序开发时不可或缺的工具之一.以下是使用API接口的一些优点: 数据交换:使用API接口可以使不同的应用程序.网站或服务之间交换数据更为便捷,减少人工输入数据的时间和风险. ...
- Java开发面试--Redis专区
1. 什么是Redis?它的主要特点是什么? 答: Redis是一个开源的.基于内存的高性能键值对存储系统.它主要用于缓存.数据存储和消息队列等场景. 高性能:Redis将数据存储在内存中,并采用单线 ...
- modbus转profinet网关连接UV系列流量计程序实例
modbus转profinet网关连接UV系列流量计程序实例 用户现场是西门子1200PLC通过兴达易控Modbus转Profinet网关连接流量计的配置,对流量瞬时值及报警值监控及控制程序案例 硬件 ...
- flask中cookies的使用
flask中cookies的使用 在Flask中对cookie的处理 1. 设置cookie: 设置cookie,默认有效期是临时cookie,浏览器关闭就失效 可以通过 max_age 设置有效期, ...
- java_方法使用细节
java_方法使用细节 1.一个方法想要返回多个值 思考?一个方法如何返回多个值 返回数组 class AA{ public int[] getSumAndSub(int n1, int n2){ / ...
- vscode没有完全汉化怎么办? vs code部分内容没汉化的解决办法
- 【XXE漏洞】原理及实践演示
一.原理 XML是用于传输和存储数据的一种格式,相当于一种信息传输工具,其中包含了XML声明,DTD文档类型定义.文档元素. XXE是xml外部实体注入漏洞,发生在应用程序解析XML输入时,没有禁止外 ...