TangoGQL LoggingΒΆ

TangoGQL logging system uses a file called logging.yaml by default to configure the logging capabilites, this is an example of that file:

----
 version: 1
 disable_existing_loggers: False
 formatters:
   simple:
     format: "%(asctime)s - %(levelname)s - %(message)s"

 handlers:
   console:
     class: logging.StreamHandler
     level: DEBUG
     formatter: simple
     stream: ext://sys.stdout

   info_file_handler:
     class: logging.handlers.RotatingFileHandler
     level: INFO
     formatter: simple
     filename: /var/log/tangogql/info.log
     maxBytes: 10485760 # 10MB
     backupCount: 20
     encoding: utf8

   error_file_handler:
     class: logging.handlers.RotatingFileHandler
     level: ERROR
     formatter: simple
     filename: /var/log/tangogql/errors.log
     maxBytes: 10485760 # 10MB
     backupCount: 20
     encoding: utf8

 loggers:
   my_module:
     level: ERROR
     handlers: [console]
     propagate: no

 root:
   level: DEBUG
   handlers: [console, info_file_handler, error_file_handler]

To change the format of the logging, for example to the SKA standard one can simply change this line:

format: "1|%(asctime)s.%(msecs)03dZ|%(levelname)s|%(threadName)s|%(funcName)s|%(filename)s#%(lineno)d|%(message)s"

Optional: There is a way to pass a new file to tangoGQL using the LOG_CFG var, and example can be found on the tangogql.yml file

version: "2.2"

 volumes:
 tangogql-logs: {}

 services:
 tangogql:
     image: web-maxiv-tangogql_tangoql:latest
     container_name: ${CONTAINER_NAME_PREFIX}tangogql
     network_mode: ${NETWORK_MODE}
     command: /bin/bash -c "source activate graphql && adev runserver tangogql/aioserver.py --app-factory=dev_run --port=5004"
     depends_on:
     - databaseds
     - redis
     volumes:
     - tangogql-logs:/var/log/tangogql
     - ./ska-logging.yaml:/tangogql/ska-logging.yaml
     environment:
     - LOG_CFG=ska-logging.yaml
     - TANGO_HOST=${TANGO_HOST}
     - LOG_PATH=/var/log/tangogql
     # If this is not set, the output of python is delayed and only shows when the docker container restarts
     - PYTHONUNBUFFERED=1
     labels:
     - "traefik.frontend.rule=Host:localhost; PathPrefix: /testdb/db, /testdb/socket, /testdb/graphiql; ReplacePathRegex: ^/testdb/((?:db|socket|graphiql.*?)/?)/?$$ /$$1"
     - "traefik.port=5004"

 redis:
     image: redis
     container_name: redis
     network_mode: ${NETWORK_MODE}

By default two files are created, one called info.log and error.log if using ska-logging file this files will go to /var/log/tangogql