docs/references/configs/page.md
# GoFr Configuration Options
This document lists all the configuration options supported by the GoFr framework. The configurations are grouped by category for better organization.
## App
{% table %}
- Name
- Description
- Default Value
---
- APP_NAME
- Name of the application
- gofr-app
---
- APP_ENV
- Name of the environment file to use (e.g., stage.env, prod.env, or local.env).
---
- APP_VERSION
- Application version
- dev
---
- LOG_LEVEL
- Level of verbosity for application logs. Supported values are **DEBUG, INFO, NOTICE, WARN, ERROR, FATAL**
- INFO
---
- REMOTE_LOG_URL
- URL to remotely change the log level
---
- REMOTE_LOG_FETCH_INTERVAL
- Time interval (in seconds) to check for remote log level updates
- 15
---
- METRICS_PORT
- Port on which the application exposes metrics
- 2121
---
- HTTP_PORT
- Port on which the HTTP server listens
- 8000
---
- GRPC_PORT
- Port on which the gRPC server listens
- 9000
---
- TRACE_EXPORTER
- Tracing exporter to use. Supported values: gofr, zipkin, jaeger, otlp.
---
- TRACER_HOST
- Hostname of the tracing collector. Required if TRACE_EXPORTER is set to zipkin or jaeger.
- **DEPRECATED**
---
- TRACER_PORT
- Port of the tracing collector. Required if TRACE_EXPORTER is set to zipkin or jaeger.
- 9411
- **DEPRECATED**
---
- TRACER_URL
- URL of the trace collector. Required if TRACE_EXPORTER is set to zipkin or jaeger.
---
- TRACER_RATIO
- Refers to the proportion of traces that are exported through sampling. It is optional configuration. By default, this ratio is set to 1.
---
- TRACER_AUTH_KEY
- Authorization header for trace exporter requests.
- Supported for zipkin, jaeger.
---
- CMD_LOGS_FILE
- File to save the logs in case of a CMD application
{% /table %}
## HTTP
{% table %}
- Name
- Description
---
- REQUEST_TIMEOUT
- Set the request timeouts (in seconds) for HTTP server.
---
- CERT_FILE
- Set the path to your PEM certificate file for the HTTPS server to establish a secure connection.
---
- KEY_FILE
- Set the path to your PEM key file for the HTTPS server to establish a secure connection.
{% /table %}
## Datasource
### SQL
{% table %}
- Name
- Description
- Default Value
---
- DB_DIALECT
- Database dialect. Supported values: mysql, postgres
---
- DB_HOST
- Hostname of the database server.
---
- DB_PORT
- Port of the database server.
- 3306
---
- DB_USER
- Username for the database.
---
- DB_PASSWORD
- Password for the database.
---
- DB_NAME
- Name of the database to use.
---
- DB_MAX_IDLE_CONNECTION
- Number of maximum idle connection.
- 2
---
- DB_MAX_OPEN_CONNECTION
- Number of maximum connections which can be used with database.
- 0 (unlimited)
---
- DB_SSL_MODE
- Currently supported only for PostgreSQL, with Default certificate file.
- disable
{% /table %}
### Redis
{% table %}
- Name
- Description
---
- REDIS_HOST
- Hostname of the Redis server.
---
- REDIS_PORT
- Port of the Redis server.
---
- REDIS_USER
- Username for the Redis server.
---
- REDIS_PASSWORD
- Password for the Redis server.
---
- REDIS_DB
- Database number to use for the Redis server.
{% /table %}
### Pub/Sub
{% table %}
- Name
- Description
- Default Value
---
- PUBSUB_BACKEND
- Pub/Sub message broker backend
- kafka, google, mqtt, nats
{% /table %}
**Kafka**
{% table %}
- Name
- Description
- Default Value
---
- PUBSUB_BROKER
- Comma-separated list of broker addresses
- localhost:9092
---
- PARTITION_SIZE
- Size of each message partition (in bytes)
- 0
---
- PUBSUB_OFFSET
- Offset to start consuming messages from. -1 for earliest, 0 for latest.
- -1
---
- KAFKA_BATCH_SIZE
- Number of messages to batch before sending to Kafka
- 1
---
- KAFKA_BATCH_BYTES
- Number of bytes to batch before sending to Kafka
- 1048576
---
- KAFKA_BATCH_TIMEOUT
- Time to wait before sending a batch to Kafka
- 100ms
---
- CONSUMER_ID
- Unique identifier for this consumer
- gofr-consumer
{% /table %}
**Google**
{% table %}
- Name
- Description
---
- GOOGLE_PROJECT_ID
- ID of the Google Cloud project. Required for Google Pub/Sub.
---
- GOOGLE_SUBSCRIPTION_NAME
- Name of the Google Pub/Sub subscription. Required for Google Pub/Sub.
{% /table %}
**MQTT**
{% table %}
- Name
- Description
- Default Value
---
- MQTT_PORT
- Port of the MQTT broker
- 1883
---
- MQTT_MESSAGE_ORDER
- Enable guaranteed message order
- false
---
- MQTT_PROTOCOL
- Communication protocol. Supported values: tcp, ssl.
- tcp
---
- MQTT_HOST
- Hostname of the MQTT broker
- localhost
---
- MQTT_USER
- Username for the MQTT broker
---
- MQTT_PASSWORD
- Password for the MQTT broker
---
- MQTT_CLIENT_ID_SUFFIX
- Suffix appended to the client ID
---
- MQTT_QOS
- Quality of Service Level
---
- MQTT_KEEP_ALIVE
- Sends regular messages to check the link is active. May not work as expected if handling func is blocking execution
{% /table %}
**NATS JetStream**
{% table %}
- Name
- Description
- Default Value
---
- NATS_SERVER
- URL of the NATS server
- nats://localhost:4222
---
- NATS_CREDS_FILE
- File containing the NATS credentials
- creds.json
{% /table %}