-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbenchmark.py
More file actions
123 lines (99 loc) · 2.54 KB
/
benchmark.py
File metadata and controls
123 lines (99 loc) · 2.54 KB
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import logwood
import timeit
import logwood.testing
from logwood.handlers.logging import FileHandler, SysLogHandler
from logwood.handlers.syslog import SysLogLibHandler
from logwood.handlers.stderr import ColoredStderrHandler
from logwood.handlers.threaded import ThreadedHandler
def original_logging_std_err():
'''
Orignal logging module with stderr handler.
'''
import logging
logwood.testing.reset_state()
logging.basicConfig(format = '%(message)s', handlers = [
logging._StderrHandler()
])
return logging.getLogger(__name__)
def original_logging_syslog():
'''
Orignal logging module with syslog handler.
'''
import logging, logging.handlers
logwood.testing.reset_state()
logging.basicConfig(format = '%(message)s', handlers = [
logging.handlers.SysLogHandler()
])
return logging.getLogger(__name__)
def no_handler():
'''
Logwood with no handlers.
'''
logwood.basic_config(handlers = [])
logger = logwood.get_logger(__name__)
return logger
def std_err_handler():
'''
Logwood with stderr handler.
'''
logwood.testing.reset_state()
logwood.basic_config(handlers = [
ColoredStderrHandler(logwood.DEBUG)
])
logger = logwood.get_logger(__name__)
return logger
def syslog_lib_handler():
'''
Logwood with syslog library handler.
'''
logwood.testing.reset_state()
logwood.basic_config(handlers = [
SysLogLibHandler()
])
logger = logwood.get_logger(__name__)
return logger
def syslog_handler():
'''
Logwood with syslog handler.
'''
logwood.testing.reset_state()
logwood.basic_config(handlers = [
SysLogHandler()
])
logger = logwood.get_logger(__name__)
return logger
def syslog_threaded_handler():
'''
Logwood with syslog handler run via ThreadedHandler.
'''
logwood.testing.reset_state()
logwood.basic_config(handlers = [
ThreadedHandler(underlying_handler = SysLogHandler())
])
logger = logwood.get_logger(__name__)
return logger
def file_handler():
'''
Logwood with FileHandler.
'''
logwood.testing.reset_state()
logwood.basic_config(handlers = [
FileHandler(filename = 'example.log')
])
logger = logwood.get_logger(__name__)
return logger
if __name__ == '__main__':
methods = (
original_logging_std_err,
original_logging_syslog,
no_handler,
syslog_lib_handler,
syslog_handler,
syslog_threaded_handler,
file_handler,
std_err_handler,
)
for test in methods:
t = timeit.timeit('logger.error("Error message")', 'from __main__ import {name}; logger = {name}()'.format(name = test.__name__))
print('Time for 1000000 calls of \t{: <25}: {}'.format(test.__name__, t))
logwood.shutdown()