我使用ubuntu 16.04。我想在具有cassandra java api的程序中编写登录文件。日志写在java控制台中,但不能写入文件。
我的节目:
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 :(得分:0)
将slf4j.properties重命名为log4j.properties,因为Log4j默认在类路径中搜索名为 log4j.properties 的文件。如果要使用其他名称,则需要使用org.apache.log4j.PropertyConfigurator显式配置属性文件。
答案 1 :(得分:0)
如果log4j找不到log4j.properties,它将使用默认的log4j.properties,它只有控制台appender。所以控制台输出并不意味着你正确log4j.properties。
您提供的log4j.properties的内容是正确的。 因此,您需要检查log4j.properties是否在类路径中,并且有权将日志写入文件。
您还可以通过代码显式配置log4j.properties。 PropertyConfigurator.configure(....)