madzak / python-json-logger

Json Formatter for the standard python logger
BSD 2-Clause "Simplified" License
1.7k stars 231 forks source link

How to assign a value json_ensure_ascii=False? #134

Closed KondratevAD closed 1 year ago

KondratevAD commented 2 years ago

I use conf file, but the value json_ensure_ascii is not assigned. Conf file:

[loggers]
keys=root

[handlers]
keys=fileHandler

[formatters]
keys=json

[logger_root]
level=INFO
handlers=fileHandler

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=json
args=('%(logfilename)s',)

[formatter_json]
class=pythonjsonlogger.jsonlogger.JsonFormatter
format=%(asctime)s - %(levelname)s - %(module)s - %(funcName)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%
json_ensure_ascii=False
AlexandrovDaniil commented 2 years ago

Hi, did you find a solution to this problem?

KondratevAD commented 2 years ago

Hi, did you find a solution to this problem?

Hi, not yet

KondratevAD commented 2 years ago

Hi, did you find a solution to this problem?

one of the solutions, but it's a crutch: Structure:

app
  | logging.ini
  | test.py
  | util
      | __init__.py
      | my_formatter.py
logging.ini [loggers] keys=root [handlers] keys=fileHandler [formatters] keys=json [logger_root] level=INFO handlers=fileHandler [handler_fileHandler] class=logging.handlers.TimedRotatingFileHandler level=INFO formatter=json args=('%(logfilename)s', 'D', 30, 1) [formatter_json] class=util.my_formatter.CustomJsonFormatter format=%(message)s

my_formatter

from pythonjsonlogger.jsonlogger import JsonFormatter

class CustomJsonFormatter(JsonFormatter):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.json_ensure_ascii = False

test.py

import logging.config

logging.config.fileConfig(
    'logging.ini',
    defaults={'logfilename': 'text.txt'},
    disable_existing_loggers=False,
)

logger = logging.getLogger(__name__)

if __name__ == '__main__':
    a = 'My name Александр'
    logger.error(a)
AlexandrovDaniil commented 2 years ago

Thank you!