log4j将日志发送到远程日志服务器

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值