11import logging
2- import os
32
4- from contextlib import suppress
53from logging .config import dictConfig
64from pathlib import Path
75from sys import stdout
86
9- import requests
10-
117from dotenv import load_dotenv
128
139from memos import settings
14- from memos .api .context .context import get_current_trace_id
1510
1611
1712# Load environment variables
@@ -31,16 +26,6 @@ def _setup_logfile() -> Path:
3126 return logfile
3227
3328
34- class CustomLoggerRequestHandler (logging .Handler ):
35- def emit (self , record ):
36- if os .getenv ("CUSTOM_LOGGER_URL" ) is None :
37- return
38-
39- if record .levelno == logging .INFO or record .levelno == logging .ERROR :
40- with suppress (Exception ):
41- log_custom_request (record .getMessage ())
42-
43-
4429LOGGING_CONFIG = {
4530 "version" : 1 ,
4631 "disable_existing_loggers" : False ,
@@ -71,14 +56,10 @@ def emit(self, record):
7156 "backupCount" : 10 ,
7257 "formatter" : "standard" ,
7358 },
74- "customRequest" : {
75- "level" : "INFO" ,
76- "class" : "memos.log.CustomLoggerRequestHandler" ,
77- },
7859 },
7960 "root" : { # Root logger handles all logs
8061 "level" : logging .DEBUG if settings .DEBUG else logging .INFO ,
81- "handlers" : ["console" , "file" , "customRequest" ],
62+ "handlers" : ["console" , "file" ],
8263 },
8364 "loggers" : {
8465 "memos" : {
@@ -100,31 +81,3 @@ def get_logger(name: str | None = None) -> logging.Logger:
10081 if name :
10182 return parent_logger .getChild (name )
10283 return parent_logger
103-
104-
105- def log_custom_request (message : str ):
106- logger_url = os .getenv ("CUSTOM_LOGGER_URL" )
107- token = os .getenv ("CUSTOM_LOGGER_TOKEN" )
108-
109- trace_id = get_current_trace_id ()
110-
111- headers = {
112- "Content-Type" : "application/json" ,
113- }
114- post_content = {
115- "message" : message ,
116- }
117-
118- for key , value in os .environ .items ():
119- if key .startswith ("CUSTOM_LOGGER_ATTRIBUTE_" ):
120- attribute_key = key [len ("CUSTOM_LOGGER_ATTRIBUTE_" ) :].lower ()
121- post_content [attribute_key ] = value
122-
123- if token is not None :
124- headers ["Authorization" ] = token
125-
126- if trace_id is not None :
127- headers ["traceId" ] = trace_id
128- post_content ["trace_id" ] = trace_id
129-
130- requests .post (url = logger_url , headers = headers , json = post_content , timeout = 5 )
0 commit comments