Configuting logging settings

Reconmap API can be configured to log application messages to multiple destinations including local files or remote sys log servers.

Logging to local files

Edit the config.json to show the following content at the top level:

{
  ...
  "logging": {
    "file": {
      "enabled": true,
      "level": "debug",
      "path": "/var/www/webapp/logs/application.log"
    }
  },
  ...
}

Logging to Graylog using GELF

First make sure to spin up a Graylog somewhere in your system. You can use the following docker compose file to start one with all its dependencies.

version: '3.8'

services:
  elasticsearch:
    image: "docker.elastic.co/elasticsearch/elasticsearch:7.12.1"
    environment:
      - node.name=elasticsearch
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - discovery.type=single-node
      - xpack.security.enabled=false
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
  mongodb:
    image: "mongo:4.2"
    restart: always

  graylog:
    image: "graylog/graylog:4.3.2"
    depends_on:
      - elasticsearch
      - mongodb
    entrypoint: "/usr/bin/tini -- wait-for-it elasticsearch:9200 --  /docker-entrypoint.sh"
    environment:
      GRAYLOG_PASSWORD_SECRET: somepasswordpepper
      # to generate a password hash, type: echo -n admin | shasum -a 256
      GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
      GRAYLOG_HTTP_BIND_ADDRESS: "0.0.0.0:9001"
      GRAYLOG_HTTP_EXTERNAL_URI: "http://localhost:9001/"
      GRAYLOG_ELASTICSEARCH_HOSTS: "http://elasticsearch:9200"
      GRAYLOG_MONGODB_URI: "mongodb://mongodb:27017/graylog"
    ports:
      - "5044:5044/tcp"   # Beats
      - "5140:5140/udp"   # Syslog
      - "5140:5140/tcp"   # Syslog
      - "5555:5555/tcp"   # RAW TCP
      - "5555:5555/udp"   # RAW TCP
      - "9001:9001/tcp"   # Server API
      - "12201:12201/tcp" # GELF TCP
      - "12201:12201/udp" # GELF UDP
      - "13301:13301/tcp" # Forwarder data
      - "13302:13302/tcp" # Forwarder config
volumes:
  esdata:

Ensure to edit config.json file to enable the gelf log handler and point to the hostname and IP of your graylog server.

{
  ...
  "logging": {
    "gelf": {
      "enabled": true,
      "level": "debug",
      "serverName": "api-graylog-1",
      "serverPort": 12201
    }
  },
  ...  
}

Now you can view all your application logs from the convenience of your browser at http://localhost:9001

Graylog log management