The FILE_STORAGE route writes MQTT messages to local CSV or JSON files. It provides simple persistence for logging, backups, and data export without requiring a database server.
File storage is ideal for simple logging, local backups, and exporting data for offline analysis. Use it when you don’t need a full database but want persistent records.
DEFINE ROUTE DataLogger WITH TYPE FILE_STORAGE ADD FILE_STORAGE_CONFIG WITH STORAGE_DIR "/data/logs" WITH FORMAT "CSV" WITH FILE_PATTERN "{0}_{date}.csv" WITH APPEND "true" ADD EVENT LogSensorData WITH SOURCE_TOPIC "sensors/#" WITH QUERY "CLEAN:{table: sensor_data, data: {value.json}}"
DEFINE ROUTE CSVLogger WITH TYPE FILE_STORAGE ADD FILE_STORAGE_CONFIG WITH STORAGE_DIR "/data/logs" WITH FORMAT "CSV" WITH FILE_PATTERN "{0}_{date}.csv" WITH APPEND "true" WITH CSV_DELIMITER "," WITH INCLUDE_TIMESTAMP "true" WITH MAX_RECORDS "10000" ADD EVENT LogSensorData WITH SOURCE_TOPIC "sensors/#" WITH DESTINATION_TOPIC "file/status" WITH QUERY "CLEAN:{table: sensor_data, data: {value.json}}"
Creates files like: sensor_data_2025-01-15.csv
Store events as JSON lines:
Copy
Ask AI
DEFINE ROUTE JSONLogger WITH TYPE FILE_STORAGE ADD FILE_STORAGE_CONFIG WITH STORAGE_DIR "/data/json" WITH FORMAT "JSON" WITH FILE_PATTERN "{0}.json" WITH APPEND "true" WITH INCLUDE_TIMESTAMP "true" WITH MAX_RECORDS "5000" ADD EVENT LogEvents WITH SOURCE_TOPIC "events/#" WITH DESTINATION_TOPIC "file/json/status" WITH QUERY "CLEAN:{table: events, data: {value.json}}"
Route to different files by data type:
Copy
Ask AI
DEFINE ROUTE MultiFileLogger WITH TYPE FILE_STORAGE ADD FILE_STORAGE_CONFIG WITH STORAGE_DIR "/data/logs" WITH FORMAT "CSV" WITH FILE_PATTERN "{0}_{date}.csv" WITH APPEND "true" WITH INCLUDE_TIMESTAMP "true" ADD EVENT LogTemperature WITH SOURCE_TOPIC "sensors/+/temperature" WITH QUERY "CLEAN:{table: temperature, data: {value.json}}" ADD EVENT LogPressure WITH SOURCE_TOPIC "sensors/+/pressure" WITH QUERY "CLEAN:{table: pressure, data: {value.json}}" ADD EVENT LogAlerts WITH SOURCE_TOPIC "alerts/#" WITH QUERY "CLEAN:{table: alerts, data: {value.json}}"
DEFINE ROUTE BackupStorage WITH TYPE FILE_STORAGE ADD FILE_STORAGE_CONFIG WITH STORAGE_DIR "/backup/mqtt" WITH FORMAT "JSON" WITH FILE_PATTERN "{0}_{date}.jsonl" WITH APPEND "true" WITH MAX_RECORDS "100000" WITH INCLUDE_TIMESTAMP "true" ADD EVENT BackupAll WITH SOURCE_TOPIC "#" WITH QUERY "CLEAN:{table: mqtt_backup, data: {value.json}}"