Cassandra i logi

Podłączyłem do mojego rozwiązania bazę danych Cassandra, korzystając ze sterownika Java Driver 2.1 for Apache Cassandra. Dodałem również logowanie do pliku korzystając z Log4j oraz tutorialu.

Najpierw zainstalowałem Cassandrę oraz DevCenter. Następnie stworzyłem interfejs, który wykorzystywać będę do obsługi bazy danych:

package karol_bocian.solution.databaseAccess;

import com.datastax.driver.core.Session;

public interface IDatabaseConnector {
    void Connect(String node);
    void Close();
    Session GetSession();
    void CreateKeyspace(String keyspace);
    void DropKeyspace(String keyspace);
}

Implementuje go klasa:

package karol_bocian.solution.databaseAccess;

import com.datastax.driver.core.*;
import org.apache.log4j.Logger;

public class DatabaseConnector implements IDatabaseConnector {
    private static final Logger logger = Logger.getLogger(DatabaseConnector.class.getName());
    private Cluster cluster;
    private Session session;

    @Override
    public void Connect(String node) {
        cluster = Cluster.builder()
                .addContactPoint(node)
                .build();
        cluster.getConfiguration()
                .getProtocolOptions()
                .setCompression(ProtocolOptions.Compression.LZ4);
        LogInfos();
        session = cluster.connect();
    }

    private void LogInfos() {
        Metadata metadata = cluster.getMetadata();
        logger.info(String.format("Connected to cluster: %s", metadata.getClusterName()));
        for (Host host : metadata.getAllHosts()) {
            logger.info(String.format("Data center: %s; Host: %s; Rack: %s",
                    host.getDatacenter(), host.getAddress(), host.getRack()));
        }
    }

    @Override
    public void CreateKeyspace(String keyspace) {
        session.execute("CREATE KEYSPACE IF NOT EXISTS " + keyspace + " WITH replication " +
                "= {'class':'SimpleStrategy', 'replication_factor':1};");
    }

    @Override
    public void DropKeyspace(String keyspace) {
        session.execute("DROP KEYSPACE " + keyspace + ";");
    }

    @Override
    public void Close() {
        session.close();
        cluster.close();
    }

    @Override
    public Session GetSession() {
        return this.session;
    }
}

W tej klasie łączymy się za pomocą metody Connect do klastra o zadanym adresie (node). Metoda CreateKeyspace tworzy zadany keyspace, zaś DropKeyspace usuwa go. Metoda LogInfos wyświetla informacje o klastrze. Po skończonej pracy musimy zamknąć połączenie z bazą. Implementuje to metoda Close.

Do logowania służy metoda:

logger.info(String.format("Connected to cluster: %s", metadata.getClusterName()));

Możliwe  jest logowanie informacji, ostrzeżeń, błędów, informacji do debugu itp.

Zmieniłem klasę Main:

package karol_bocian.solution;

import karol_bocian.solution.databaseAccess.DatabaseConnector;
import karol_bocian.solution.databaseAccess.IDatabaseConnector;

public class Main {
  private static String node = "127.0.0.1";
  private static String keyspace = "agents";

  public static void main(String[] args) {
    IDatabaseConnector databaseConnector = new DatabaseConnector();
    databaseConnector.Connect(node);
    databaseConnector.CreateKeyspace(keyspace);
    databaseConnector.Close();
 }
}

Do resources dodałem również plik log4j.properties, w którym zapisałem ustawienia logowania:

# Root logger option
log4j.rootLogger=DEBUG, stdout, file

# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=D:\\logs.log
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

Utworzyłem również pusty plik tekstowy D:\\logs.log.

Logi zapisywane są do tego pliku. Wyświetlane są również na konsoli.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie na Google

Komentujesz korzystając z konta Google. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s