2017-02-04 91 views
0

我使用Ubuntu 16.04。我想在程序中寫入具有cassandra java api的日誌文件。日誌寫在Java控制檯中,但不要寫入文件中。log4j不寫入文件

我的程序:

import com.datastax.driver.core.querybuilder.*; 
import com.datastax.driver.core.*; 
import com.datastax.driver.core.ResultSet; 
import java.io.IOException; 
import java.util.ArrayList; 
import org.apache.log4j.Logger; 


public class DbAdmin { 

    private Cluster cluster; 
    private Session session; 
    private ResultSet R; 
    private int Count = 1; 
    static Logger logger = Logger.getLogger(DbAdmin.class.getName()); 

    public DbAdmin() throws IOException { 
     try { 
      this.cluster = Cluster.builder().addContactPoint(address).withCredentials(authecation).build(); 
      this.session = cluster.connectkeyspace); 
      logger.debug("Connect to database"); 
     } catch(Exception e){ 

     } 
    } 

和我的log4j.properties:

# Define the root logger with appender file 
log = /home/sah/log4j 
log4j.rootLogger = DEBUG, FILE 

# Define the file appender 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=${log}/g.log 

# Define the layout for file appender 
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 

回答

0

重命名slf4j.properties以log4j.properties爲Log4j的默認搜索一個文件名爲log4j.properties在類路徑中。如果您想使用不同的名稱,則需要使用org.apache.log4j.PropertyConfigurator顯式配置屬性文件。

+0

對不起,這是log4j.properties.i編輯問題@ abhisrivastava24 –

+0

你的log4j配置看起來不錯。檢查日誌文件夾$ {log}的權限。您的程序是否可以寫入日誌文件夾中的文件。 – abhisrivastava24

+0

其他簡單的程序可以在同一個文件中寫入@ abhisrivastava24 –

0

如果log4j找不到log4j.properties,它將使用只有控制檯appender的默認log4j.properties。所以控制檯輸出不意味着你正確的log4j.properties。

您提供的log4j.properties的內容是正確的。 因此,您需要檢查log4j.properties是否在類路徑中,並且有權將日誌寫入文件。

您還可以通過代碼顯式配置log4j.properties。 PropertyConfigurator.configure(....)

+0

它是log4j.properties https://ibb.co/gtxvva的路徑。我如何檢查預處理? @begginghard –

+0

ls -al/home/sah/log4j 您使用IDEA來運行應用程序嗎?否則運行一個包jar? – begginghard

+0

我使用intellij和maven和cassandra @begginghard –