2015-12-02 114 views
3

我想改變Datastax駕駛記錄儀的記錄水平,但多次嘗試後,我無法弄清楚......Datastax驅動程序日誌級別

這是我使用的類:

import org.apache.log4j.Level; 
import org.apache.log4j.Logger; 

import com.datastax.driver.core.Cluster; 
import com.datastax.driver.core.Metadata; 

import com.datastax.driver.core.Session; 
import com.datastax.driver.mapping.MappingManager; 

public class CassandraSession { 

/** 
* CassandraSession singleton 
*/ 
private static CassandraSession INSTANCE = null; 
/** 
* The Cassandra Cluster 
*/ 
private static Cluster cluster; 
/** 
* The Cassandra Session 
*/ 
private static Session session; 
/** 
* MappingManager is used to create Cassandra mappers 
*/ 
private static MappingManager manager; 
/** 
* LOGGER 
*/ 
private static final Logger LOGGER = Logger.getLogger(CassandraSession.class); 
/** 
* Keyspace Name 
*/ 
private static final String KEYSPACE = "MY_KEYSPACE"; 

/** 
* CassandraSession 
*/ 
private CassandraSession() { 
    initialize(); 
} 

/** 
* This method initializes the connection with the Cassandra Database 
*/ 
private void initialize() { 
    cluster = Cluster.builder().withClusterName("TestCluster").addContactPoints("127.0.0.1").withPort(9042).build(); 
    final Metadata metadata = cluster.getMetadata(); 
    LOGGER.info("Connected to cluster: " + metadata.getClusterName()); 
} 

/** 
* Get the instance of the singleton CassandraSession 
* 
* @return 
*/ 
public static synchronized CassandraSession getInstance() { 
    if (INSTANCE == null) { 
     INSTANCE = new CassandraSession(); 
    } 
    return INSTANCE; 
} 

/** 
* Get the Cassandra Session 
* 
* @return 
*/ 
public Session getSession() { 
    if (session == null) { 
     session = cluster.connect(KEYSPACE); 
    } 
    return session; 
} 

/** 
* Get the Cassandra MappingManager 
* 
* @return 
*/ 
public MappingManager getManager() { 
    if (manager == null) { 
     manager = new MappingManager(session); 
    } 
    return manager; 
} 

} 

我試圖把一個log4j.properties文件放在src/main/resources中,以編程方式更改日誌級別,沒有任何更改。我'仍然得到以下的痕跡:

11:39:48.762 [http-bio-8080-exec-6] DEBUG c.d.driver.core.SystemProperties - com.datastax.driver.NEW_NODE_DELAY_SECONDS is undefined, using default value 1 
11:39:48.768 [http-bio-8080-exec-6] DEBUG c.d.driver.core.SystemProperties - com.datastax.driver.NON_BLOCKING_EXECUTOR_SIZE is undefined, using default value 8 
11:39:48.770 [http-bio-8080-exec-6] DEBUG c.d.driver.core.SystemProperties - com.datastax.driver.NOTIF_LOCK_TIMEOUT_SECONDS is undefined, using default value 60 
11:39:48.812 [http-bio-8080-exec-6] DEBUG com.datastax.driver.core.Cluster - Starting new cluster with contact points [/127.0.0.1:9042] 
11:39:48.827 [http-bio-8080-exec-6] DEBUG i.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework 
11:39:48.924 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.Buffer.address: available 
11:39:48.924 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available 
11:39:48.924 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available 
11:39:48.925 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent0 - java.nio.Bits.unaligned: true 
11:39:48.926 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent - Platform: Windows 
11:39:48.926 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent - Java version: 8 
11:39:48.926 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.noUnsafe: false 
11:39:48.926 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent - sun.misc.Unsafe: available 
11:39:48.927 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent - -Dio.netty.noJavassist: false 
11:39:48.929 [http-bio-8080-exec-6] DEBUG i.n.util.internal.PlatformDependent - Javassist: unavailable 

我可以從這些痕跡看到的是,sl4j作爲默認的日誌framwork。那我該如何告訴Datastax的驅動程序來使用我的記錄器(其屬性是由我的服務器定義的)。

服務器使用:阿帕奇TomEE羽1.7.2

Datastax驅動程序版本:2.1.9

卡桑德拉版本:2.2.1

感謝。

回答

1

SLF4J是一個外觀,它將根據運行時類路徑中的哪個綁定選擇一個日誌框架。既然你提到的Log4j,你可能想是這樣的:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.12</version> 
</dependency> 

約在駕駛記錄的更多信息,請參見this page

2

感謝您的回答Olivier,但是這個依賴項已經在我的pom.xml文件中聲明瞭(我在提問之前看到了你鏈接的頁面)。

但沒關係,我找到了解決方案。其實問題是關於slf4j綁定之間的衝突,我在TomEE的日誌中看到它。

我在我的pom.xml這種結合:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.7.12</version> 
</dependency> 

而在這個庫的另一個結合:

<dependency> 
    <groupId>org.apache.cassandra</groupId> 
    <artifactId>cassandra-all</artifactId> 
    <version>2.2.1</version> 
</dependency> 

有關 「的logback-classic.jar」

然後將溶液是排除它:

<dependency> 
    <groupId>org.apache.cassandra</groupId> 
    <artifactId>cassandra-all</artifactId> 
    <version>2.2.1</version> 
     <exclusions> 
      <exclusion> 
       <artifactId>logback-classic</artifactId> 
       <groupId>ch.qos.logback</groupId> 
      </exclusion> 
     </exclusions> 
</dependency> 

謝謝。