dovecot-2.2: cassandra: Added log_level parameter to connect_str...

dovecot at dovecot.org dovecot at dovecot.org
Fri May 29 16:14:07 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/315adb25e6b4
changeset: 18761:315adb25e6b4
user:      Timo Sirainen <tss at iki.fi>
date:      Fri May 29 19:11:50 2015 +0300
description:
cassandra: Added log_level parameter to connect_string.
Available values are critical, error, warn (default), info, debug and trace.

diffstat:

 src/lib-sql/driver-cassandra.c |  32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diffs (77 lines):

diff -r 83f1b9956788 -r 315adb25e6b4 src/lib-sql/driver-cassandra.c
--- a/src/lib-sql/driver-cassandra.c	Fri May 29 18:22:17 2015 +0300
+++ b/src/lib-sql/driver-cassandra.c	Fri May 29 19:11:50 2015 +0300
@@ -30,6 +30,7 @@
 
 	char *hosts, *keyspace;
 	CassConsistency consistency;
+	CassLogLevel log_level;
 
 	CassCluster *cluster;
 	CassSession *session;
@@ -102,6 +103,18 @@
 	{ CASS_CONSISTENCY_LOCAL_ONE, "local-one" }
 };
 
+static struct {
+	CassLogLevel log_level;
+	const char *name;
+} cass_log_level_names[] = {
+	{ CASS_LOG_CRITICAL, "critical" },
+	{ CASS_LOG_ERROR, "error" },
+	{ CASS_LOG_WARN, "warn" },
+	{ CASS_LOG_INFO, "info" },
+	{ CASS_LOG_DEBUG, "debug" },
+	{ CASS_LOG_TRACE, "trace" }
+};
+
 static void result_finish(struct cassandra_result *result);
 
 static int consistency_parse(const char *str, CassConsistency *consistency_r)
@@ -117,6 +130,19 @@
 	return -1;
 }
 
+static int log_level_parse(const char *str, CassLogLevel *log_level_r)
+{
+	unsigned int i;
+
+	for (i = 0; i < N_ELEMENTS(cass_log_level_names); i++) {
+		if (strcmp(cass_log_level_names[i].name, str) == 0) {
+			*log_level_r = cass_log_level_names[i].log_level;
+			return 0;
+		}
+	}
+	return -1;
+}
+
 static void driver_cassandra_set_state(struct cassandra_db *db, enum sql_db_state state)
 {
 	i_assert(state == SQL_DB_STATE_BUSY || db->cur_result == NULL);
@@ -304,6 +330,8 @@
 	const char *const *args, *key, *value;
 	string_t *hosts = t_str_new(64);
 
+	db->log_level = CASS_LOG_WARN;
+
 	args = t_strsplit_spaces(connect_string, " ");
 	for (; *args != NULL; args++) {
 		value = strchr(*args, '=');
@@ -325,6 +353,9 @@
 			if (consistency_parse(value, &db->consistency) < 0)
 				i_fatal("cassandra: Unknown consistency: %s", value);
 			db->set_consistency = TRUE;
+		} else if (strcmp(key, "log_level") == 0) {
+			if (log_level_parse(value, &db->log_level) < 0)
+				i_fatal("cassandra: Unknown log_level: %s", value);
 		} else {
 			i_fatal("cassandra: Unknown connect string: %s", key);
 		}
@@ -348,6 +379,7 @@
 	T_BEGIN {
 		driver_cassandra_parse_connect_string(db, connect_string);
 	} T_END;
+	cass_log_set_level(db->log_level);
 
 	db->cluster = cass_cluster_new();
 	cass_cluster_set_connect_timeout(db->cluster, SQL_CONNECT_TIMEOUT_SECS * 1000);


More information about the dovecot-cvs mailing list