From a1e6a799ef1657b9f311e9d578d04e105889b9ec Mon Sep 17 00:00:00 2001
From: jkee <jkee@yandex-team.ru>
Date: Mon, 16 Mar 2015 21:54:21 +0300
Subject: [PATCH] METR-15511: logger

---
 README.md                                     |  4 ++
 .../yandex/metrika/clickhouse/CHDriver.java   |  5 ++
 .../metrika/clickhouse/util/Logger.java       | 61 +++++++++++++++++++
 3 files changed, 70 insertions(+)
 create mode 100644 src/main/java/ru/yandex/metrika/clickhouse/util/Logger.java

diff --git a/README.md b/README.md
index 16f04b0d..11272404 100644
--- a/README.md
+++ b/README.md
@@ -3,10 +3,14 @@ ClickHouse JDBC driver
 
 Пока что в состоянии "как-то работает".
 
+### Сборка
+
 jar можно собрать через
 
 `mvn package assembly:single`
 
 И забрать в `target/jdbc-1.0-SNAPSHOT-jar-with-dependencies.jar`
 
+Собираться будет только если стоит jdk 1.6 и если она прописана в $JAVA_HOME при сборке (или 1.6 это дефолт).
+
 Позже сделаю заливку последней версии куда-нибудь.
diff --git a/src/main/java/ru/yandex/metrika/clickhouse/CHDriver.java b/src/main/java/ru/yandex/metrika/clickhouse/CHDriver.java
index 6d475d5d..af4ec6e7 100644
--- a/src/main/java/ru/yandex/metrika/clickhouse/CHDriver.java
+++ b/src/main/java/ru/yandex/metrika/clickhouse/CHDriver.java
@@ -1,5 +1,7 @@
 package ru.yandex.metrika.clickhouse;
 
+import ru.yandex.metrika.clickhouse.util.Logger;
+
 import java.sql.*;
 import java.util.Properties;
 
@@ -8,6 +10,8 @@ import java.util.Properties;
  */
 public class CHDriver implements Driver {
 
+    private static final Logger logger = Logger.of(CHDriver.class);
+
     static {
         CHDriver driver = new CHDriver();
         try {
@@ -15,6 +19,7 @@ public class CHDriver implements Driver {
         } catch (SQLException e) {
             throw new RuntimeException(e);
         }
+        logger.info("Driver registered");
     }
 
     @Override
diff --git a/src/main/java/ru/yandex/metrika/clickhouse/util/Logger.java b/src/main/java/ru/yandex/metrika/clickhouse/util/Logger.java
new file mode 100644
index 00000000..68e83adb
--- /dev/null
+++ b/src/main/java/ru/yandex/metrika/clickhouse/util/Logger.java
@@ -0,0 +1,61 @@
+package ru.yandex.metrika.clickhouse.util;
+
+import java.sql.DriverManager;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.logging.Level;
+
+/**
+ * Тупой логгер. При желании можно перейти на что-то приличное, что умеет писать в PrintWriter и конфигуриться на лету.
+ *
+ * Created by jkee on 16.03.15.
+ */
+public class Logger {
+
+    private static Level currentLevel = Level.INFO; // todo configuration
+
+    private final DateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    private final String key;
+
+    private Logger(String key) {
+        this.key = key;
+    }
+
+    public static Logger logger(String key) {
+        return new Logger(key);
+    }
+
+    public static Logger of(Class clazz) {
+        return new Logger(clazz.getSimpleName());
+    }
+
+    public static Logger of(Object object) {
+        return new Logger(object.getClass().getSimpleName());
+    }
+
+    public void info(String message) {
+        log(message, Level.INFO);
+    }
+
+    public void debug(String message) {
+        log(message, Level.FINE);
+    }
+
+    public void warn(String message) {
+        log(message, Level.WARNING);
+    }
+
+    public void error(String message) {
+        log(message, Level.SEVERE);
+    }
+
+    public synchronized void log(String message, Level level) {
+        if (level.intValue() >= currentLevel.intValue()) {
+            String str = String.format("%s <%s> %s: %s", DATE_FORMAT.format(new Date()), level.getName(), key, message);
+            DriverManager.println(str);
+        }
+    }
+
+}
-- 
GitLab