Java 记录器无法登录文件
Java Logger wont log into file
我无法让我的记录器工作。
在我的代码中,我有这些行:
private static final Logger log = Logger.getLogger(ServerThread.class.getName());
log.setUseParentHandlers(false);
FileHandler fh = new FileHandler("ex.txt", true);
SimpleFormatter sf = new SimpleFormatter();
fh.setFormatter(sf);
log.addHandler(fh);
log.setLevel(Level.FINE);
稍后当我收到用户的输入时:
log.log(Level.FINE,inputString);
但所发生的只是 fileHandler 创建了一个文件 ex.txt,但没有任何内容记录到该文件中。我确定正在执行 log.log()。
您也可以使用这种简单的方法。
public static Logger logger;
public static Logger startLogger() {
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HH-mm-ss");
Date date = new Date();
String datefor = dateFormat.format(date);
logger = Logger.getLogger("MyLog");
PropertyConfigurator.configure(CLASSPATH + "/" + "log4j.properties");
Appender appender = null;
try {
appender = new FileAppender(new SimpleLayout(), CLASSPATH + "/log/MyLogFile" + datefor + ".log");
logger.addAppender(appender);
appender.setLayout(new SimpleLayout());
} catch (SecurityException exception) {
exception.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}
}
确保您只创建一个 FileHandler,并确保您也调整了 FileHandler 的级别。
private static final Logger log = Logger.getLogger(ServerThread.class.getName());
private static final FileHandler fh;
static {
try {
log.setUseParentHandlers(false);
fh = new FileHandler("ex.txt", true);
fh.setFormatter(new SimpleFormatter());
fh.setLevel(Level.FINE);
log.addHandler(fh);
log.setLevel(Level.FINE);
} catch (IOException ioe) {
throw new ExceptionInInitializerError(ioe);
}
}
如果您仍然看不到结果,那么您应该 确保文件处理程序和记录器是按照您期望的布局创建的。
一般来说,您应该设置一个 logging.properties
文件。
我无法让我的记录器工作。 在我的代码中,我有这些行:
private static final Logger log = Logger.getLogger(ServerThread.class.getName());
log.setUseParentHandlers(false);
FileHandler fh = new FileHandler("ex.txt", true);
SimpleFormatter sf = new SimpleFormatter();
fh.setFormatter(sf);
log.addHandler(fh);
log.setLevel(Level.FINE);
稍后当我收到用户的输入时:
log.log(Level.FINE,inputString);
但所发生的只是 fileHandler 创建了一个文件 ex.txt,但没有任何内容记录到该文件中。我确定正在执行 log.log()。
您也可以使用这种简单的方法。
public static Logger logger;
public static Logger startLogger() {
DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd-HH-mm-ss");
Date date = new Date();
String datefor = dateFormat.format(date);
logger = Logger.getLogger("MyLog");
PropertyConfigurator.configure(CLASSPATH + "/" + "log4j.properties");
Appender appender = null;
try {
appender = new FileAppender(new SimpleLayout(), CLASSPATH + "/log/MyLogFile" + datefor + ".log");
logger.addAppender(appender);
appender.setLayout(new SimpleLayout());
} catch (SecurityException exception) {
exception.printStackTrace();
} catch (IOException exception) {
exception.printStackTrace();
}
}
确保您只创建一个 FileHandler,并确保您也调整了 FileHandler 的级别。
private static final Logger log = Logger.getLogger(ServerThread.class.getName());
private static final FileHandler fh;
static {
try {
log.setUseParentHandlers(false);
fh = new FileHandler("ex.txt", true);
fh.setFormatter(new SimpleFormatter());
fh.setLevel(Level.FINE);
log.addHandler(fh);
log.setLevel(Level.FINE);
} catch (IOException ioe) {
throw new ExceptionInInitializerError(ioe);
}
}
如果您仍然看不到结果,那么您应该
一般来说,您应该设置一个 logging.properties
文件。