-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathexample_logging_2.py
More file actions
51 lines (39 loc) · 1.42 KB
/
example_logging_2.py
File metadata and controls
51 lines (39 loc) · 1.42 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
import logging
# Create logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# Create console handler and set level to debug
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.DEBUG)
# Create file handler and set level to error
file_handler = logging.FileHandler("error.log", mode="w")
file_handler.setLevel(logging.ERROR)
# Create a formatter
formatter = logging.Formatter("%(asctime)s.%(msecs)03d - %(name)s - %(levelname)s - %(message)s")
# Add formatter to the handlers
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# Add handlers to logger
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
# Log some messages
logger.debug("debug message")
logger.info("info message")
logger.warning("warn message")
logger.error("error message")
logger.critical("critical message")
logger.info("message %s %d", "arg", 5)
logger.info("message %(foo)s %(bar)s", {"foo": 1, "bar": 20})
try:
1 / 0
except:
logger.error("Some trouble (%s)", "expected")
# Custom handler example
class MyHandler(logging.Handler):
def emit(self, record):
print("levelname=%(levelname)s name=%(name)s message=%(message)s" % record.__dict__)
print("extra1=%s" % record.__dict__.get("extra1"))
logging.getLogger().addHandler(MyHandler())
logging.getLogger().setLevel(logging.INFO)
logging.info("Test message7")
logging.info("Test message8", extra={"extra1": 99})