forked from progrium/ginkgo
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlogger.py
More file actions
49 lines (39 loc) · 1.37 KB
/
Copy pathlogger.py
File metadata and controls
49 lines (39 loc) · 1.37 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
import logging
import os
import ginkgo
class Logger(object):
logfile = ginkgo.Setting("logfile", default=None, help="""
Path to primary logfile
""".strip())
config = ginkgo.Setting("logconfig", default=None, help="""
Basic configuration of standard Python logger
""".strip())
def __init__(self, process):
if self.logfile is None:
process.config.set("logfile",
"/tmp/{}.log".format(process.app.service_name))
if self.config is None:
process.config.set("logconfig", dict(
format="%(asctime)s %(levelname) 7s %(module)s: %(message)s",
level=logging.DEBUG))
logging.basicConfig(**self.config)
self.file = None
def open(self):
self.file = open(self.logfile, "w", buffering=0)
def redirect(self, input):
os.dup2(self.file.fileno(), input.fileno())
def close(self):
if self.file:
self.file.close()
def print_log(self):
with open(self.logfile, "r") as f:
print f.read()
def tail_log(self):
with open(self.logfile, "r") as f:
lines = f.readlines()
for line in lines[-20:]:
print line.strip()
while True:
line = f.readline()
if line:
print line.strip()