博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python日志
阅读量:6504 次
发布时间:2019-06-24

本文共 3555 字,大约阅读时间需要 11 分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
log4py.py日志重构类
import 
datetime  
import 
sys  
import 
traceback  
import 
codecs  
import 
types  
import 
logging
import 
os
import 
time 
#log编码全部按utf8处理  
loglevels 
= 
{
'stdout'
:[
'info'
,
'debug'
,
'warn'
,
'error'
,
'fatal'
],  
    
'file'
:[
'info'
,
'debug'
,
'warn'
,
'error'
,
'fatal'
]  
    
}  
#print os.getcwd()+'/logs/logs.txt' 
logfile 
= 
os.getcwd()
+
'/logs/logs.'
+
time.strftime(
'%Y-%m-%d'
,time.localtime(time.time()))
+
'.txt'  
class 
log4py():  
    
def 
__init__(
self
,modulename
=
"gloabal"
):  
        
self
.filename 
= 
logfile  
        
#self.flag = set(loglevel['stdout']+loglevel['file'])  
        
self
.loglevel 
= 
loglevels  
        
self
.modulename 
= 
modulename  
        
self
.fcname 
= 
None  
    
class 
function():  
        
def 
__init__(
self
,fcname,parent):  
            
parent.debug(
'enter '
,fcname)  
            
self
.fcname 
= 
fcname  
            
self
.parent 
= 
parent  
        
def 
__del__(
self
):  
            
self
.parent.debug(
'exit '
,
self
.fcname)  
    
def 
dbgfc(
self
,fcname):  
        
'''''set debug function name'''  
        
= 
None  
        
if 
'debug' 
in 
self
.flag:  
            
= 
self
.function(fcname,
self
)  
        
return 
f  
    
def 
_gettime(
self
):  
        
return 
datetime.datetime.now().isoformat()  
    
def 
outstd(
self
,
*
fmt):  
        
= 
self
.fmtstr(
*
fmt)  
        
print 
s  
    
def 
outfile(
self
,
*
fmt):  
        
= 
self
.fmtstr(
*
fmt)  
        
#print 'before outfile '+s  
        
if 
s:  
            
#print 'outfile '+s  
            
encoding 
= 
'utf8'  
            
out 
= 
open
(logfile, 
'a+'
)
#, encoding  
            
out.write(s)  
            
out.write(
'\n'
)  
            
out.close()  
    
def 
fmtstr(
self
*
fmt):  
        
str 
= 
''  
        
encoding 
= 
'utf8'
#缺省utf8编码  
        
for 
in 
fmt:  
            
if 
not 
type
(i) 
in 
[types.UnicodeType, types.StringTypes, types.StringType]:  
                
s
= 
repr
(i)  
            
else
:  
                
= 
i  
            
if 
type
(s) 
=
= 
type
(u''):  
                
str 
+
= 
s.encode(encoding)  
            
else
:  
                
str 
+
= 
s  
            
str 
+
= 
'.'  
        
#str += '/n'  
        
#print 'fmtstr:'+str  
        
return 
str  
    
def 
debug(
self
,
*
fmt):  
        
if 
'debug' 
in 
self
.loglevel[
'stdout'
]:  
            
self
.outstd(
self
._gettime(),
'[DEBUG]'
,
self
.modulename,
*
fmt)  
        
if 
'debug' 
in 
self
.loglevel[
'file'
]:  
            
#print 'debug file ...'  
            
self
.outfile(
self
._gettime(),
'[DEBUG]'
,
self
.modulename,
*
fmt)  
    
def 
warn(
self
,
*
fmt):  
        
if 
'warn' 
in 
self
.loglevel[
'stdout'
]:  
            
self
.outstd(
self
._gettime(),
'[WARN]'
,
self
.modulename,
*
fmt)  
        
if 
'warn' 
in 
self
.loglevel[
'file'
]:  
            
self
.outfile(
self
._gettime(),
'[WARN]'
,
self
.modulename,
*
fmt)  
    
def 
info(
self
,
*
fmt):  
        
if 
'info' 
in 
self
.loglevel[
'stdout'
]:  
            
self
.outstd(
self
._gettime(),
'[INFO]'
,
self
.modulename,
*
fmt)  
        
if 
'info' 
in 
self
.loglevel[
'file'
]:  
            
self
.outfile(
self
._gettime(),
'[INFO]'
,
self
.modulename,
*
fmt)  
    
def 
error(
self
,
*
fmt):  
        
#print '/033[0;30;41m',  
        
if 
'error' 
in 
self
.loglevel[
'stdout'
]:  
            
self
.outstd(
self
._gettime(),
'[ERROR]'
,
self
.modulename,
*
fmt)  
        
if 
'error' 
in 
self
.loglevel[
'file'
]:  
            
self
.outfile(
self
._gettime(),
'[ERROR]'
,
self
.modulename,
*
fmt)  
        
#print '/033[0m'  
    
def 
fatal(
self
,
*
fmt):  
        
if 
'fatal' 
in 
self
.loglevel[
'stdout'
]:  
            
self
.outstd(
self
._gettime(),
'[FATAL'
,
self
.modulename,
*
fmt)  
        
if 
'fatal' 
in 
self
.loglevel[
'file'
]:  
            
self
.outfile(
self
._gettime(),
'[FATAL'
,
self
.modulename,
*
fmt)  
#unit test  
if 
__name__ 
=
= 
'__main__'
:  
    
log
=
log4py()  
    
log.outstd(
'INFO'
,
'stdout'
,
'test'
)  
    
log.outfile(
'INFO'
,
'stdout'
,
'test'
)  
    
log.debug(
'debug information 调试'
)  
    
log.error(
'errorrrrrrrrrrrrrrr'
)  
    
log.debug(
'hello'
)

用法:

1
2
3
from 
log4py 
import 
log4py
log
=
log4py(
'所在的python文件'
)
本文转自 luoguo 51CTO博客,原文链接:http://blog.51cto.com/luoguoling/1945089

转载地址:http://pxqyo.baihongyu.com/

你可能感兴趣的文章
SharePoint 2010 服务应用程序(Service Application)架构(1)
查看>>
JDBC+Servlet+JSP整合开发之25.JSP动作元素
查看>>
烂泥:rsync与inotify集成实现数据实时同步更新
查看>>
go语言笔记——go环境变量goroot是安装了路径和gopath是三方包路径
查看>>
数据操作类 SQLHelper.cs
查看>>
黑客讲故事:攻下隔壁女生路由器后,我都做了些什么【转】
查看>>
JAVA 设计模式 模板方法模式
查看>>
【MySQL使用技巧】JDBC连接
查看>>
HTML5边玩边学(9):俄罗斯方块就是这么简单 之 数据模型篇
查看>>
Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt【转】
查看>>
稳定,实际是暴风雨来临前的死寂
查看>>
十一有感
查看>>
《OOD启思录》:61条面向对象设计的经验原则
查看>>
计算二重定积分
查看>>
1078: 输入入门(3)
查看>>
Linux内核驱动之GPIO子系统(一)GPIO的使用【转】
查看>>
关于 WebRequest.RegisterPrefix
查看>>
QName
查看>>
object does not contain a definition for get_range
查看>>
C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ? ....
查看>>