-
-
Save panamantis/5797dda98b1fa6fab2f739a7aacc5e9d to your computer and use it in GitHub Desktop.
[loggers] | |
keys=root,app,uvicorn | |
[handlers] | |
keys=console,file,uvicorn | |
[formatters] | |
keys=console,file | |
[logger_root] | |
level=DEBUG | |
handlers=console | |
[logger_app] | |
level=INFO | |
handlers=file | |
propagate=1 | |
qualname=app | |
[logger_uvicorn] | |
level=INFO | |
handlers=uvicorn | |
propagate=1 | |
qualname=uvicorn | |
[handler_console] | |
class=StreamHandler | |
level=DEBUG | |
formatter=console | |
args=(sys.stdout,) | |
[handler_file] | |
class=logging.handlers.TimedRotatingFileHandler | |
level=DEBUG | |
formatter=file | |
args=(os.getcwd() + '/logs/training-stats.log', "D", 1, 0) | |
[handler_uvicorn] | |
class=logging.handlers.TimedRotatingFileHandler | |
level=DEBUG | |
formatter=file | |
args=(os.getcwd() + '/logs/uvicorn.log', "D", 1, 0) | |
[formatter_console] | |
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s | |
[formatter_file] | |
format=%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s |
{ | |
"version": 1, | |
"disable_existing_loggers": false, | |
"formatters": { | |
"simple": { | |
"format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s" | |
}, | |
"verbose": { | |
"format": "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s" | |
} | |
}, | |
"handlers": { | |
"console": { | |
"class": "logging.StreamHandler", | |
"level": "DEBUG", | |
"formatter": "simple", | |
"stream": "ext://sys.stdout" | |
}, | |
"file": { | |
"class": "logging.handlers.TimedRotatingFileHandler", | |
"level": "DEBUG", | |
"formatter": "verbose", | |
"when": "D", | |
"backupCount": 0, | |
"filename": "./logs/training-stats.log" | |
}, | |
"uvicorn": { | |
"class": "logging.handlers.TimedRotatingFileHandler", | |
"level": "DEBUG", | |
"formatter": "verbose", | |
"when": "D", | |
"backupCount": 0, | |
"filename": "./logs/uvicorn.log" | |
} | |
}, | |
"loggers": { | |
"root": { | |
"level": "DEBUG", | |
"handlers": ["console"] | |
}, | |
"app": { | |
"level": "DEBUG", | |
"handlers": ["file"], | |
"propagate": true, | |
"qualname": "app" | |
}, | |
"uvicorn": { | |
"level": "DEBUG", | |
"handlers": ["uvicorn"], | |
"propagate": true, | |
"qualname": "uvicorn" | |
} | |
} | |
} |
version: 1 | |
disable_existing_loggers: no | |
formatters: | |
simple: | |
format: "%(asctime)s - %(name)s - %(levelname)s - %(message)s" | |
verbose: | |
format: "%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s" | |
handlers: | |
console: | |
class: logging.StreamHandler | |
level: DEBUG | |
formatter: simple | |
stream: ext://sys.stdout | |
file: | |
class: logging.handlers.TimedRotatingFileHandler | |
level: DEBUG | |
formatter: verbose | |
when: D | |
backupCount: 0 | |
filename: ./logs/training-stats.log | |
uvicorn: | |
class: logging.handlers.TimedRotatingFileHandler | |
level: DEBUG | |
formatter: verbose | |
when: D | |
backupCount: 0 | |
filename: ./logs/uvicorn.log | |
loggers: | |
root: | |
level: DEBUG | |
handlers: [console] | |
app: | |
level: DEBUG | |
handlers: [file] | |
propagate: yes | |
qualname: app | |
uvicorn: | |
level: INFO | |
handlers: [uvicorn] | |
propagate: yes | |
qualname: uvicorn |
import os | |
import sys | |
import json | |
import logging.config | |
import yaml | |
def setup_yaml(): | |
with open("logging.yaml", "r") as f: | |
yaml_config = yaml.safe_load(f.read()) | |
logging.config.dictConfig(yaml_config) | |
def setup_json(): | |
with open("logging.json", "r") as f: | |
json_config = json.load(f) | |
logging.config.dictConfig(config) | |
def setup_ini(): | |
logging.config.fileConfig("logging.ini") | |
def main(): | |
format = sys.argv[0] | |
if format == "json": | |
setup_json() | |
elif format == "yaml": | |
setup_yaml() | |
elif format == "ini": | |
setup_ini() | |
else: | |
print("File format does not exist") | |
sys.exit() | |
if __name__ == "__main__": | |
main() | |
logger = logging.getLogger(__name__) | |
logger.info("hello world") | |
logger.error("fatal error") | |
--- Logging error ---
Traceback (most recent call last):
File "D:\PYTHON SETUP\lib\logging\handlers.py", line 70, in emit
self.doRollover()
File "D:\PYTHON SETUP\lib\logging\handlers.py", line 394, in doRollover
self.rotate(self.baseFilename, dfn)
File "D:\PYTHON SETUP\lib\logging\handlers.py", line 111, in rotate
os.rename(source, dest)
PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'D:\PYTHON\QTASolution\Backend\logs\QTASolutions.log' -> 'D:\PYTHON\QTASolution\Backend\logs\QTASolutions.log.2022-03-24_10_52_53.log'
Call stack:
File "D:\PYTHON SETUP\lib\threading.py", line 890, in _bootstrap
self._bootstrap_inner()
File "D:\PYTHON SETUP\lib\threading.py", line 932, in _bootstrap_inner
self.run()
File "D:\PYTHON SETUP\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "D:\PYTHON SETUP\lib\socketserver.py", line 650, in process_request_thread
self.finish_request(request, client_address)
File "D:\PYTHON SETUP\lib\socketserver.py", line 360, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "D:\PYTHON SETUP\lib\socketserver.py", line 720, in init
self.handle()
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 347, in handle
BaseHTTPRequestHandler.handle(self)
File "D:\PYTHON SETUP\lib\http\server.py", line 426, in handle
self.handle_one_request()
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 379, in handle_one_request
self.run_wsgi()
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 324, in run_wsgi
execute(self.server.app)
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 316, in execute
write(data)
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 274, in write
self.send_response(code, msg)
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 383, in send_response
self.log_request(code)
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 433, in log_request
self.log("info", '"%s" %s %s', msg, code, size)
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug\serving.py", line 442, in log
_log(
File "D:\PYTHON\QTASolution\Backend\env\lib\site-packages\werkzeug_internal.py", line 225, in _log
getattr(_logger, type)(message.rstrip(), *args, **kwargs)
Message: '192.168.100.143 - - [24/Mar/2022 10:54:30] "%s" %s %s'
Why do I have to restart my project to create a new log file by date? Is there a way to automatically generate log files?