我是log4j的初学者,我似乎已经理解了基础知识。我的问题是,我将在2台不同的机器上部署我的程序(机器1上的客户机和机器2上的服务器可以说),那么我将如何进行日志记录?如何在客户端服务器程序中集成log4j日志记录?
我已在现在以下:
log4j.properties:
# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE
# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=log.out
# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true
# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug
# Set the append to false, overwrite
log4j.appender.FILE.Append=true
# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
log4jTest.java:
包ch.ethz.rama.asl.logger;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class log4jTest {
static Logger log = Logger.getLogger(ch.ethz.rama.asl.client.ClientInstance.class);
public static void main(String args[]) throws FileNotFoundException, IOException{
Properties props = new Properties();
props.load(new FileInputStream("/Users/ramapriyasridharan/Documents/asl_v1/ClientServerNio/bin/log4j.properties"));
PropertyConfigurator.configure(props);
log.debug("debug");
log.info("info");
}
}
所以我应该为客户端和服务器有不同的记录器对象?另外如果我想在客户端追加相同的文件,我应该使用某种方法传递记录器对象,还是应该创建一个新对象?林有点困惑这个,谢谢
Logger对象log是每个java类定义的。如果客户端和服务器都可以访问相同的文件系统,则可以对双方使用相同的配置,因此可以让它们登录到同一个文件中。如果服务器和客户端在同一个JVM中运行,您也可以登录到同一个控制台。然而,正如服务器和客户端通常指示两台物理上不同的机器一样,您应该在机器上本地登录不同的日志文件。 – hotzst
@hotzst我的客户端和服务器都有很多类,因此对于每个类我都应该有一个单独的记录器?这意味着我将拥有相同数量的客户端/服务器类和记录器类? – LoveMeow
是的,单独的记录器对象并不意味着不同的记录上下文。在代码中创建一个记录器将创建一个输出,该输出包含记录器所属类的名称,因此在日志文件中可以很容易地区分哪个记录行来自哪个类。 – hotzst