您的位置:首页 > 其它

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

2014-09-03 10:57 471 查看
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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  log4j