1. 服务端
配置文件log4j-server.properties, 其中的[%X{ip}]是自定义的客户端ip,稍后在客户端那给出输入的方法
#socket的日志
log4j.logger.org.apache.log4j=ERROR,file
#下面这个开头必须和客户端一致
log4j.logger.com.test=DEBUG,testA
log4j.logger.com.product=DEBUG,productA
#Define how the socket server should store the log events
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.File=logs/socket.log
log4j.appender.file.encoding=UTF-8
log4j.appender.file.Append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%X{ip}][%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%C : %M : %L]:%m%n
log4j.appender.testA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.testA.File=logs/testA.log
log4j.appender.testA.encoding=UTF-8
log4j.appender.testA.Append=true
log4j.appender.testA.layout=org.apache.log4j.PatternLayout
log4j.appender.testA.layout.ConversionPattern=[%X{ip}][%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%C : %M : %L]:%m%n
log4j.appender.productA=org.apache.log4j.DailyRollingFileAppender
log4j.appender.productA.File=logs/productA.log
log4j.appender.productA.encoding=UTF-8
log4j.appender.productA.Append=true
log4j.appender.productA.layout=org.apache.log4j.PatternLayout
log4j.appender.productA.layout.ConversionPattern=[%X{ip}][%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} [%C : %M : %L]:%m%n
启动- 端口9898
java -classpath log4j-1.2.16.jar org.apache.log4j.net.SimpleSocketServer 9898 log4j-server.properties
后台启动
nohup java -classpath log4j-1.2.16.jar org.apache.log4j.net.SimpleSocketServer 9898 log4j-server.properties 2>&1 &
2.客户端
配置log4j.properties
#可以多个append,本地加远程
log4j.logger.com.test=DEBUG,localTestA,socket
log4j.logger.com.prodcut=DEBUG,localProductA,socket
log4j.appender.socket=org.apache.log4j.net.SocketAppender
log4j.appender.socket.Port=9898
log4j.appender.socket.RemoteHost=192.168.0.1
log4j.appender.socket.ReconnectionDelay=10000
代码,在应用启动的地方,写入本机ip参数
try {
MDC.put("ip", InetAddress.getLocalHost().getHostAddress().toString());
} catch (UnknownHostException e) {
log.error("获取本机ip失败");
}
3. 完成,愉快的查看日志吧