#日志记录到多文件示例

 import logging

 def error_log(message):
file_1_1 = logging.FileHandler('error.log', 'a+', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")
file_1_1.setFormatter(fmt)
# 创建日志对象
logger1 = logging.Logger('error', level=logging.ERROR)
# 日志对象和文件对象创建关系
logger1.addHandler(file_1_1) logger1.log(logging.FATAL,message) def run_log(message):
file_1_1 = logging.FileHandler('run.log', 'a+', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")
file_1_1.setFormatter(fmt)
# 创建日志对象
logger1 = logging.Logger('run', level=logging.ERROR)
# 日志对象和文件对象创建关系
logger1.addHandler(file_1_1) logger1.log(logging.FATAL,message)

#日志记录到单个文件示例

import  logging
logging.basicConfig(
filename="11.log",
format="%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(message)s",
datefmt='%Y-%m-%d %H:%M:%S %p',
level=logging.INFO
)
logging.log(logging.ERROR,"MESSAGE....") #单例模式
 import  logging

 class LoggerHelper(object):
_i = None @classmethod
def instance(cls):
if cls._i:
return cls._i
else:
cls._i = LoggerHelper() #LoggerHelper()
return cls._i # obj def __init__(self):
error_log = logging.FileHandler('error.log', 'a+', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")
error_log.setFormatter(fmt)
# 创建日志对象
error_logger = logging.Logger('error', level=logging.ERROR)
# 日志对象和文件对象创建关系
error_logger.addHandler(error_log)
self.error_logger = error_logger run_log = logging.FileHandler('run.log', 'a+', encoding='utf-8')
fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")
run_log.setFormatter(fmt)
# 创建日志对象
run_logger = logging.Logger('run', level=logging.ERROR)
# 日志对象和文件对象创建关系
run_logger.addHandler(run_log)
self.run_logger = run_logger if __name__ == '__main__':
#调用
# 单例模式,用户获得第一次创建的对象
obj1 = LoggerHelper.instance()
obj1.run_logger.log(logging.FATAL,'asdfasdfasdfasdf') obj2 = LoggerHelper.instance()
obj2.run_logger.log(logging.FATAL,'asdfasdfasdfasdf') obj3 = LoggerHelper.instance()
obj3.run_logger.log(logging.FATAL,'asdfasdfasdfasdf')

#只创建一个实例的设计模式

cls为类名

 class Foo(object):
_i = None
def __init__(self):
self.n = 123
def __new__(cls, *args, **kwargs):
if cls._i:
return cls._i
else:
o = object.__new__(cls,*args,**kwargs)
cls._i = o
return cls._i obj1 = Foo()
obj2 = Foo()

python logging 模块记录日志的更多相关文章

  1. python2.7下使用logging模块记录日志到终端显示乱码问题解决

    刚才翻了翻2年以前用python2.7写的一个爬虫程序,主要功能就是把各地市知识产权局/专利局网站的专利相关项目.课题通知,定期爬取和分析,辅助企业进行项目申请. 这里要谈的不是爬虫功能的实现,而是今 ...

  2. Python logging模块无法正常输出日志

    废话少说,先上代码 File:logger.conf [formatters] keys=default [formatter_default] format=%(asctime)s - %(name ...

  3. 0x03 Python logging模块之Formatter格式

    目录 logging模块之Formatter格式 Formater对象 日志输出格式化字符串 LogRecoder对象 时间格式化字符串 logging模块之Formatter格式 在记录日志是,日志 ...

  4. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

  5. python logging模块使用

    近来再弄一个小项目,已经到收尾阶段了.希望加入写log机制来增加程序出错后的判断分析.尝试使用了python logging模块. #-*- coding:utf-8 -*- import loggi ...

  6. 读懂掌握 Python logging 模块源码 (附带一些 example)

    搜了一下自己的 Blog 一直缺乏一篇 Python logging 模块的深度使用的文章.其实这个模块非常常用,也有非常多的滥用.所以看看源码来详细记录一篇属于 logging 模块的文章. 整个 ...

  7. (转)python logging模块

    python logging模块 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python ...

  8. Python logging 模块学习

    logging example Level When it's used Numeric value DEBUG Detailed information, typically of interest ...

  9. python logging—模块

    python logging模块 python logging提供了标准的日志接口,python logging日志分为5个等级: debug(), info(), warning(), error( ...

随机推荐

  1. 10. CTF综合靶机渗透(三)

    靶机说明 斗牛犬工业公司最近将其网站污损,并由恶意德国牧羊犬黑客团队拥有.这是否意味着有更多的漏洞可以利用?你为什么不知道?:) 这是标准的Boot-to-Root.你唯一的目标是进入根目录并看到祝贺 ...

  2. HDU 5974 A Simple Math Problem (解方程)

    题意:给定a和b,求一组满足x+y=a && lcm(x, y)=b. 析:x+y = a, lcm(x, y) = b,=>x + y = a, x * y = b * k,其 ...

  3. java二分法查找实现代码

    package util; class BinarySearch { static int binarySearch(int[] array,int goal){//传入排好序的数组和目标数字 int ...

  4. ASP.NET控件之CompareValidator控件

    作用:对Textbox或者其他输入框进行比较验证: 属性:ControlToValidate:要验证的控件: ErrorMessage:错误提示信息: ControlToCompare:与此相比的控件 ...

  5. Spring是一个分层的Java

    Spring简介 Spring是一个分层的Java SE/EE应用一站式的轻量级开源框架.Spring核心是IOC和AOP. Spring优点 -方便解耦,简化开发,通过Spring提供的IoC容器, ...

  6. 在 CentOS7 安装 ELK【转】

    ELK是一个成熟的日志系统,主要功能有收集.分析.检索,详细见 elastic官网. 本文主要介绍如何在CentOS7下安装最新版本的ELK,当然现在docker已经有完全配置成功的elk容器,安装配 ...

  7. [SCOI2010]连续攻击游戏 BZOJ1854 二分图匹配

    题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性.并且每种装备 ...

  8. Boost多线程

    一.概述     线程是在同一程序同一时间内允许执行不同函数的离散处理队列,这使得在一个长时间进行某种特殊运算的函数在执行时不阻碍其他的函数时变得十分重要.线程实际上允许同时执行两种函数,而这两者不必 ...

  9. JavaScript刷新页面,不重复提交

    location.replace(location.href);//刷新页面,不重复提交

  10. SVN服务器地址更换方法

    由于工作需要,已将SVN服务器从172.16.8.xxx上迁移至172.16.8.yyy上,SVN地址变为:https://172.16.8.yyy:8443/svn,原下载到客户端电脑的svn不需要 ...