log4j将日志发送到远程日志服务器
应用的jar包:
log4j-1.2.17.jar
客户端:
log4j.xml:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE log4j:configuration SYSTEM "dtd/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE\} %5p %c{1\}:%L - %m%n"/>
</layout>
</appender>
<appender name="remoteFile" class="org.apache.log4j.net.SocketAppender">
<param name="remoteHost" value="localhost" />
<param name="port" value="4712" />
<param name="Threshold" value="INFO" />
<param name="ReconnectionDelay" value="1000" />
<param name="LocationInfo" value="true" />
</appender>
<logger name="testRemote" additivity="false">
<level value="INFO" />
<appender-ref ref="STDOUT" />
</logger>
<logger name="testRemote2" additivity="false">
<level value="INFO" />
<appender-ref ref="remoteFile" />
</logger>
<root>
<level value="error" />
<appender-ref ref="STDOUT" />
</root>
</log4j:configuration>
测试类:
Log4JSocketAppenderTest.java
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4JSocketAppenderTest
{
public static void main(String[] args) throws Exception
{
//发送日志记录时间
long runTime = 1000 * 60 * 1;
DOMConfigurator.configure(Log4JSocketAppenderTest.class.getResource("log4j.xml"));
Logger remoteLogger = LogManager.getLogger("testRemote2");
long i = 0;
String sendInfo = "the send info is ";
long old = System.currentTimeMillis();
while (true)
{
System.out.println("send info begin: " + sendInfo + i);
remoteLogger.info(sendInfo + i);
i++;
//每3秒记录一次日志
Thread.sleep(1000 * 3);
long now = System.currentTimeMillis();
if((now - old) > runTime)
{
break;
}
}
}
}
服务端:
应用到的jar包:
log4j-1.2.17.jar
log4j-server.properties:
#Define a narrow log category. A category like debug will produce some extra logs also from server itself
log4j.rootLogger=info, file
#Define how the socket server should store the log events
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=application-error.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d] [%t] [%m]%n
启动SocketServer服务:
java -classpath D:\log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 D:\log4j-server.properties
方法二:
public class Log4jRomteUtil {
static String remoteHost = "192.168.17.210";
static int port = 4671;
static String Threshold = "INFO";
static int ReconnectionDelay = 1000;
static boolean locationInfo = true;
public static Logger getRomteLogClass(String calzzName) {
SocketAppender sa = new SocketAppender(remoteHost, port);
sa.setThreshold(Level.INFO);
sa.setReconnectionDelay(ReconnectionDelay);
sa.setLocationInfo(locationInfo);
Logger remoteLogger = LogManager.getLogger(calzzName);
remoteLogger.addAppender(sa);
return remoteLogger;
}
}
// 日志打印
org.apache.log4j.Logger remoteLogger = Log4jRomteUtil
.getRomteLogClass("ExchangeOutPointServiceImpl");
方法三:
客户端
在log4j.properties中加入
log4j.properties文件新增配置:
#远程日志
remote.logLevel=FATAL
log4j.category.com....exchange.impl.JpeasExchangeOutPointServiceImpl = ${ remote.logLevel}, remote
log4j.category.com......impl.sendcoupon.EbuySendCouponProcessServiceImpl = ${ remote.logLevel}, remote
log4j.category.com......impl.sendcoupon.YMSendCouponProcessServiceImpl = ${ remote.logLevel}, remote
log4j.category.com......impl.DealMsgExchangeServiceImpl = ${ remote.logLevel}, remote
log4j.category.com......impl.QueryOrderStateServiceImpl = ${ remote.logLevel}, remote
log4j.category.com......impl.TmallPointOrderServiceImpl = ${ remote.logLevel}, remote
log4j.appender.remote=org.apache.log4j.net.SocketAppender
log4j.appender.remote.Port=4672
log4j.appender.remote.RemoteHost=192.168.17.210
log4j.appender.remote.ReconnectionDelay=10000
java类:
private Logger log = Logger.getLogger(EbuySendCouponProcessServiceImpl.class);
log.warn("-------");
服务端:
启动SocketServer服务:
java -classpath D:\log4j-1.2.17.jar org.apache.log4j.net.SimpleSocketServer 4712 D:\log4j-server.properties